使用Decorator获取已实现接口的列表

Rem*_*sen 10 typescript aurelia babeljs ecmascript-7 typescript1.5

你知道是否可以使用装饰器获取类实现的接口数组:

interface IWarrior {
  // ...
}

interface INinja {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我这样做:

@somedecorator
class Ninja implements INinja, IWarrior {
 // ...
}
Run Code Online (Sandbox Code Playgroud)

在运行时Ninja将有一个注释,其中包含["INinja", "IWarrior"]

谢谢

Max*_*din 5

目前,类型仅在开发和编译期间使用。类型信息不会以任何方式转换为已编译的 JavaScript 代码。但是您可以像这样将字符串列表传递给装饰器参数:

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);
Run Code Online (Sandbox Code Playgroud)