我试图在typescript中使用node_module uuid-js
。我已经安装了模块和打字。
问题:如何导入模块?
我想要使用的方法是uuid.create
。
这是在uuid-js
的类型中定义的:
export = uuid;
declare class uuid {
equals(uuid: uuid): boolean;
...
static create(version?: number): uuid;
...
}
使用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.
答案 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
没有。