TypeScript 代码类似于揭示模块模式结构

2024-02-12

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

让我头疼的是我不得不将一些使用揭示模块模式的代码转换为 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

这有效,但很丑。

有什么建议如何让它变得更好吗?


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

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

如果您更喜欢保留该类,那么这里有一个更简洁的代码:

class MyOtherConstructor {
    constructor(public publicMethod: () => void) {
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 代码类似于揭示模块模式结构 的相关文章