假设我有一个nodejs模块,当我需要它时,它会向我返回一个构造函数。如下所示:
var Mod = require("modulename");
var mod = new Mod();
mod.method();
我想编写一个可以导入和使用的.d.ts声明文件,如下所示:
import * as Mod from "mod";
let mod = new Mod();
mod.method();
我已经尝试过阅读所有关于Typescript网站的文档,但是老实说就像泥巴一样清晰,我觉得我已经尝试了我的.d中存在的类,接口,命名空间,模块和导出的每个组合。 ts文件。我想知道上述是否可以实现。任何人都可以提供任何帮助吗?
答案 0 :(得分:4)
而不是写这个
import * as Mod from "mod";
let mod = new Mod();
你应该写这个
import Mod = require("mod");
let mod = new Mod();
为什么?
import * as Mod from "mod";
这是ES6模块的导入语法。它表示您正在将"mod"
模块对象导入本地名称Mod
。 ES6模块仅公开属性,不能作为函数或new
调用。
我会再次这样说,因为人们通常不相信我或选择忽略它: ES6模块只公开属性,不能作为函数或new
调用。
如果您开始将代码编译到ES6运行时(而不是使用CJS / AMD向ES5模块下级),您的代码将停止工作。但是ES6模块中没有require
功能,因此“旧式”import Mod = require("mod");
仍然可以。