我正在使用JS模块模式(如this post中所述),我的代码如下所示:
Foo = (function($, ko) {
//Constructor for Foo
var Foo = function () {
//Uses $ and ko
};
return Foo;
})($, ko)
我想将此模式转换为TypeScript等效项,但我不确定它是什么。我用这个替换整个IIFE吗?
class Foo {
constructor() {
//Uses $ and ko
}
}
这似乎大致相当,但它失去了我的依赖项的显式注入。这是在TypeScript中执行此操作的方法吗?
答案 0 :(得分:1)
Typescript是JavaScript的超集,因此您的JavaScript代码是有效的TypeScript。下面的代码编译为完全相同的JavaScript;
var $, ko;
var Foo = (function($, ko) {
//Constructor for Foo
var Foo = function () {
//Uses $ and ko
};
return Foo;
})($, ko)
var theFoo = new Foo();
或者,如果要使用TypeScript类,可以在TypeScript中将值传递给构造函数;
var $, ko;
class Foo {
constructor($, ko) {
//Uses $ and ko
}
}
var theFoo = new Foo($, ko);
制作此Javascript:
var $, ko;
var Foo = (function () {
function Foo($, ko) {
//Uses $ and ko
}
return Foo;
})();
var theFoo = new Foo($, ko);
这并不等同于您的原始代码,但它可能有助于此目的。
答案 1 :(得分:0)
import $ = require("../vendor/jquery")
这是你在找什么?
要记住的一点是,任何JavaScript代码都是有效的TypeScript代码。像以前一样使用jQuery,它会正常工作。否则你需要更具体。