你知道是否有可能使用一个装饰器来获取一个类实现的接口数组:
interface IWarrior {
// ...
}
interface INinja {
// ...
}
所以如果我做了如下的事情:
@somedecorator
class Ninja implements INinja, IWarrior {
// ...
}
在运行时,忍者会有一个包含
["INinja", "IWarrior"]
的注释?谢谢
最佳答案
目前,类型只在开发和编译时使用。类型信息不会以任何方式转换为已编译的javascript代码。但是,您可以将字符串列表传递给decorator参数,如下所示:
interface IWarrior {
// ...
}
interface INinja {
// ...
}
interface Function {
interfacesList: string[];
}
@interfaces(["INinja", "IWarrior"])
class Ninja implements INinja, IWarrior {
}
function interfaces(list: string[]) {
return (target: any) => {
target.interfacesList = list;
return target;
}
}
console.log(Ninja.interfacesList);