打字稿:如何导入使用`export = uuid`

时间:2018-01-29 18:39:01

标签: typescript import

我试图在typescript中使用node_module uuid-js。我已经安装了模块和打字。

问题:如何导入模块?

我想要使用的方法是uuid.create

这是在uuid-js的类型中定义的:

export = uuid;
declare class uuid {
    equals(uuid: uuid): boolean;
    ... 
    static create(version?: number): uuid;
    ...
}

typescript doc说:

  

使用export =,TypeScript特定的导入导入模块时   必须使用module = require(" module")导入模块。

这似乎意味着我需要这样做:

import UUID = require('uuid-js');

似乎可以编译到这个:

const UUID = require("uuid-js")  

我的代码中是否应该使用import而不是const?为什么不直接使用编译的代码?

我觉得使用require很奇怪。也许,我没有使用打字或做别的事情会更好......?

使用之间有什么区别:

import UUID = require('uuid-js');

const UUID = require("uuid-js")  

我也尝试使用像Madara Uchiha建议的更传统的导入策略,但是我收到了错误。

使用import * as UUID from 'uuid-js'会导致:

error TS2497: Module '".../node_modules/@types/uuid-js/index"' resolves to a non-module entity and cannot be imported using this construct.

使用import UUID from 'uuid-js';会导致:

error TS1192: Module '".../node_modules/@types/uuid-js/index"' has no default export.

2 个答案:

答案 0 :(得分:2)

在ES2015模块出现之前,import something = require('something')export = something都是TypeScript发明的遗留语法。

现在,我们使用标准模块语法,如下所示:

import * as UUID from 'uuid-js'; // if uuid-js has no export default
// or
import UUID from 'uuid-js'; // if it does.

您提出的打字片段表示您应该使用前者。

答案 1 :(得分:0)

  

这些不同

import还会导入类型const/require没有。