【发布时间】:2015-03-26 09:48:00
【问题描述】:
我想将我编写的一些 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
这行得通,但它很丑。
有什么建议可以让它变得更好吗?
【问题讨论】:
-
将 myFunction 设为私有有什么问题?
-
您的意思是让 myFunction 成为 MyOtherConstructor 的私有之一?如果是这种情况,我不能,因为我希望将 myFunction 独立用于匿名函数代码块。我不想先创建 obj 然后使用它的函数。我想在该代码块中按原样使用 myFunction 并创建一个具有 myFunction 方法的新 obj 对象。后面会在代码中用到。
标签: javascript typescript revealing-module-pattern