TypeScript代码类似于Revealing Module Pattern结构

时间:2015-03-26 09:48:01

标签: javascript typescript revealing-module-pattern

我想将我编写的一些JavaScript代码转换为TypeScript。作为JavaScript开发人员,我对TypeScript语法和思维方式都很陌生。

让我头疼的是我很难将使用Revealing Module Pattern的一些代码转换成TypeScript。

以下是一个例子:

//JS Code
var obj;

//code...
(function(){
    function myFunction(){
        //do work
    }


    function MyOtherConstructor(){
        return {
            publicMethod: myFunction
        }
    }

    obj = new MyOtherConstructor();
})();

//use obj.publicMethod in code later

我认为这是一个解决方法:

//TypeScript code
var obj;

class MyOtherConstructor {
        private callback: any;
        constructor(f: any){
            this.callback = f;
        }
        publicMethod(): any{
            this.callback();
        }
}
//code...
(() => {
    function myFunction(){
        //do work
        console.log("Called myFunction");
    }
    obj = new MyOtherConstructor(myFunction);
})();

//use obj.publicMethod in code later

有效,但很难看。

有什么建议让这更好吗?

1 个答案:

答案 0 :(得分:3)

如果您需要单个对象obj,请不要使用类。名称空间更适合:

namespace obj {
    function myFunction() {
        // ...
    }
    export var publicMethod = myFunction;
}

如果你想保留课程,那么这里有一个更简洁的代码:

class MyOtherConstructor {
    constructor(public publicMethod: () => void) {
    }
}