typescript - 使用装饰器获取已实现接口(interface)的列表

标签 typescript aurelia babeljs typescript1.5 ecmascript-2016

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

interface IWarrior {
  // ...
}

interface INinja {
  // ...
}

所以如果我做类似的事情:

@somedecorator
class Ninja implements INinja, IWarrior {
 // ...
}

在运行时 Ninja 会有一个包含 ["INinja", "IWarrior"] 的注解 ?

谢谢

最佳答案

目前,类型仅在开发和编译期间使用。类型信息不会以任何方式转换为已编译的 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);

关于typescript - 使用装饰器获取已实现接口(interface)的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188387/

相关文章:

javascript - Angular 4访问嵌套 react 表单元素

typescript - 在 typescript 中创建动态类实例

aurelia - 创建封装标签和编辑字段的可重用 Aurelia 小部件的最佳方法

javascript - Aurelia JS - Kendo UI 垂直 slider 的高度百分比?

typescript - `babel-plugin-react-css-modules` typescript 类型检查

javascript - ES6 继承 : uses `super` to access the properties of the parent class

javascript - 在函数中使用动态导入时,如何在全局变量中指定类型信息?

gulp - 在多个 Aurelia 项目中共享组件

javascript - 使用 babel 7 忽略函数外部的返回

javascript - ./src/components/Main.jsx 中的错误 - Webpack