我有这个文件:
//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”文件,其目的是让打字稿知道导入函数的类型:
declare module "foo"
{
function foo(): string
export = foo;
}
没有运气。
我认为问题出在导入语法上(对于es6和commonjs模块,你不能使用相同的语法,对吧?)。所以我这样做了。
import foo = require("./foo");
正如您可能猜到的那样,这也不起作用。
当我将其作为具有npm install d3
的节点模块安装并引用其d.ts
文件时,我已成功导入d3并成功使用它。我用这段代码做了:
import * as d3 from "d3";
我无法对任何其他模块(jquery,box2d,box2d-commonjs等)以及我自己的库(如上所示)执行相同的操作。我是Typescript的新手,所以可能我错过了一些非常明显的东西,但我自己也无法弄明白。
答案 0 :(得分:1)
事实证明这是非常明显的:你必须使用--allowJs
选项。这对我有用:
tsc --moduleResolution "node" --module "commonjs" --allowJs main.ts
尽管如此,我仍然无法弄清楚为什么d3会工作而其他图书馆却没有。