首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用类装饰器向类添加新属性?

如何使用类装饰器向类添加新属性?
EN

Stack Overflow用户
提问于 2016-12-06 16:52:27
回答 1查看 8.1K关注 0票数 8

如何使用类装饰器向类添加新属性?

例如,代码:

代码语言:javascript
运行
复制
@MyClassDecorator
class MyClass {
    myFirstName: string;
    myLastName: string;
}

// I need something like this:
function MyClassDecorator (target: any): any {
    target['myNickname'] = 'Gambler';
}

let myClass = new MyClass();
console.log(myClass['myNickname']); // expecting "Gambler" but got "undefined"

如何修正这段代码?

是否可以使用装饰器将属性添加到类中?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 17:17:05

您需要将属性添加到原型,而不是构造函数:

代码语言:javascript
运行
复制
function MyClassDecorator(target: any): any {
    target.prototype.myNickname = "Gambler";
}

这样你就能得到你想要的东西,但问题是,如果没有类型记录的抱怨,你就无法访问这个属性:

代码语言:javascript
运行
复制
let myClass = new MyClass();
console.log(myClass.myNickname); // error: Property 'myNickname' does not exist on type 'MyClass'

你可以尝试这样的方法:

代码语言:javascript
运行
复制
function myClassFactory(): MyClass & { myNickname: string } {
    return new MyClass() as MyClass & { myNickname: string };
}

let myClass = myClassFactory();
console.log(myClass.myNickname); // all good

(操场密码

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41000670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档