打字稿等效于 JS 模块模式
Typescript equivalent to JS Module pattern
我正在使用JS模块模式(如本文所述),我的代码如下所示:
Foo = (function($, ko) {
//Constructor for Foo
var Foo = function () {
//Uses $ and ko
};
return Foo;
})($, ko)
我想将此模式转换为 TypeScript 等效项,但我不确定那会是什么。 我用这个替换整个 IIFE 吗?
class Foo {
constructor() {
//Uses $ and ko
}
}
这似乎大致等效,但随后它失去了我的依赖项的显式注入。 这是在 TypeScript 中执行此操作的方法吗?
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);
这并不直接等同于您的原始代码,但它可以达到目的。
import $ = require("../vendor/jquery")
这就是你要找的?
要记住的一件事是,任何JavaScript代码都是有效的TypeScript代码。按照你过去的方式使用jQuery,它会很好地工作。否则,您需要更具体。
相关文章:
- 正在更改node.js模块变量
- react native中常见的js模块
- grunt serve:dist时找不到Angular.js模块,但grunt serve工作正常
- 如何为JS模块添加包含路径
- 在混合基本 URL 下动态加载 require.js 模块
- 如何在公共js模块中从web服务返回数据
- 找不到以前导入的 JS 模块
- 从 Node.js 模块中的缓冲区实例中逐行读取字符串
- 定义 Backbone.Layout 作为 need js 模块
- 在节点中.js“模块”始终是一个对象
- Node.js模块的异步初始化
- 不要自动嘲笑常见的js模块
- Node.js模块问题
- Node.JS-Q模块-承诺
- Node.js-模块导出静态变量
- 正在从node.js模块获取D9025警告和C1083错误..I'I’我没有主意
- 从node.js模块中向JSON添加原型函数
- 是否可以创建一个require.js模块,该模块在加载完成后自行决定
- 检查node.js模块是否可用
- 将JavaScript代码迁移到具有String.prototype扩展名的node.js模块