typescript - 我可以从 TypeScript 的类体内访问 "class object"

标签 typescript

我可以做一些类似于 CoffeeScript 或 Ruby 的事情来创建类“宏”

class A
    # events adds the class method "listenTo" to the class (not to the prototype)
    # listenTo will make all instances of A a listener to the given Event
    events @

    # this will register instances of A to listen for SomeEvents
    # the event broker (not here in this code) will specifically look
    # for a method called "onSomeEvent(event)"
    @listenTo SomeEvent

    # and then later
    onSomeEvent: (event)-> #do what ever is needed

这将创建以下 Javascript 代码

var A;
A = (function() {
   function A() {}
   events(A);
   A.listenTo(SomeEvent);
   A.prototype.onSomeEvent = function(event) {};
   return A;
})();

最佳答案

看看你的例子,如果你这样写:

function events(A:any) {
    A.listenTo = function(arg:any){alert(arg);};
}

class A {
    public onSomeEvent(event:any) {
        //do stuff  
    }
    constructor {
        events(A);
        (<any>A).listenTo("SomeEvent");
    }
}

在 TypeScript 中,它将编译为:

function events(A) {
    A.listenTo = function (arg) {
        alert(arg);
    };
}
var A = (function () {
    function A() {
        events(A);
        (A).listenTo("SomeEvent");
    }
    A.prototype.onSomeEvent = function (event) {
    };
    return A;
})();

关于typescript - 我可以从 TypeScript 的类体内访问 "class object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686280/

相关文章:

typescript - typescript 中的参数 'void' 是什么意思?

javascript - 将枚举对象转换为数组在 javascript 中返回额外的对象

javascript - 如何创建数组并为 typescript 中的任何索引赋值

javascript - 带有 Angular 形式输入的 ngModelOptions

reactjs - Typescript + React - 没有重载匹配这个调用

reactjs - 使用 Enzyme 测试 React 组件。 typescript 找不到实例方法

angular - 如何使用 blob 在新选项卡中显示 pdf

angular - Protractor 结果不一致 - 失败 : script timeout: result was not received

typescript - 类方法的条件返回类型取决于构造函数中的选项

angular - 在 Angular 中使用带有 RxJS 的声明式/响应式(Reactive)数据访问方法时如何获取 "pass"数据?