可以Typescript导入CommonJS模块
Can Typescript import CommonJS Modules?
我有这个文件:
//foo.js
var foo = function () {
return "foo";
};
module.exports = foo;
所以,我想把它导入到我的Typescript文件中。我试过这个
//typescript.ts
import * as foo from ("./foo");
没用。我读到这个"环境"模块,所以我添加了这个
//typescript.ts
/// <reference path="./foo.d.ts" />
import * as foo from ("./foo");
我在同一个文件夹中添加了一个"foo.d.ts"文件,目的是让typescript了解我导入函数的类型:
declare module "foo"
{
function foo(): string
export = foo;
}
运气不好。
我认为问题出在导入语法上(es6和commonjs模块不能有相同的语法,对吧?)。所以我就这么做了。
import foo = require("./foo");
正如你可能猜到的那样,这也不起作用。
当我将d3作为npm install d3
的节点模块安装并引用其d.ts
文件时,我已经能够成功导入并使用它。我用这个代码做的:
import * as d3 from "d3";
我无法对任何其他模块(jquery、box2d、box2d-commonjs等)进行同样的操作,也无法对我自己的库进行如上所述的操作。我是打字的新手,所以我可能错过了一些非常明显的东西,但我还没能自己弄清楚。
事实证明,这是非常明显的:您必须使用--allowJs
选项。这对我有效:
tsc --moduleResolution "node" --module "commonjs" --allowJs main.ts
尽管如此,我仍然不明白为什么d3有效,而其他库则无效。
相关文章:
- 如何捆绑commonjs模块,除非指定需要
- 如何在JSFiddle上使用CommonJS模块
- 如何使用默认函数导出为 commonjs 模块创建类型
- 定义CommonJS模块时,fn.call(this)与fn()的对比
- 可以Typescript导入CommonJS模块
- Typescript:从CommonJS模块导入默认值,从打字文件导出附加类型
- 打包具有依赖关系的Browser/Server CommonJS模块
- 如何将一个没有模块的js应用程序迁移到commonJs模块
- 闭包编译器可以构建CommonJS模块
- 从 RequireJS 中的 CommonJS 样式模块导出构造函数
- 当作为 CommonJS 模块加载时,Angular 是否全局将自己分配给“window.angular”
- 如何将 CommonJS 模块捆绑到单个 UMD 库文件中
- 模块中的访问属性(CommonJS 样式)
- 火狐插件错误:在 resource://gre/modules/commonjs/http.js 找不到模块“路径”
- CommonJS singelton模块中的循环依赖关系
- Java 7 + Rhino 1.7R3 支持 CommonJS 模块
- AngularJS 模块与 CommonJS/ECMA6 模块
- When是通过node js使用CommonJS模块化时执行的Javascript构造函数
- 为什么简化的CommonJS Wrapper语法在我的Dojo AMD模块上不起作用
- Backbone是如何做到的.$在CommonJS模块配置中设置