你知道是否有可能使用一个装饰器来获取一个类实现的接口数组:

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);

07-26 09:29