【发布时间】:2017-09-22 15:08:11
【问题描述】:
在我的 TypeScript 项目中,我想使用一个名为“pure-uuid”的 Node.js 模块。
使用纯 JavaScript,“pure-uuid”可以如下使用:
const UUID = require('pure-uuid')
const id = new UUID(4).format();
我将代码翻译成 TypeScript:
import UUID from 'pure-uuid';
const id:string = new UUID(4).format();
当我编译代码时,正在生成以下内容:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var pure_uuid_1 = require("pure-uuid");
var id = new pure_uuid_1.default(4).format();
不幸的是,TypeScript 在“pure-uuid”引用中添加了.default,这使得代码在执行时失败:
TypeError: pure_uuid_1.default is not a constructor
我认为错误编译是由TypeScript定义文件中的错误引起的(已手动编写):
interface UUID {
/* making */
make(version: number, ...params: any[]): UUID;
/* parsing */
parse(str: string): UUID;
/* formatting */
format(type?: string): string;
/* formatting (alias) */
tostring(type?: string): string;
/* importing */
import(arr: number[]): UUID;
/* exporting */
export(): number[];
/* byte-wise comparison */
compare(other: UUID): boolean;
}
export interface UUIDConstructor {
/* default construction */
new(): UUID;
/* parsing construction */
new(uuid: string): UUID;
/* making construction */
new(version: number): UUID;
new(version: number, ns: string, data: string): UUID;
}
declare var UUID: UUIDConstructor;
export default UUID;
导出“pure-uuid”模块的正确方法是什么?
【问题讨论】:
-
你不能在接口中声明构造函数。
-
试试:
export = UUID; -
@Paleo,使用
export = UUID;在写new UUID(4).format()时显示error TS2693: 'UUID' only refers to a type, but is being used as a value here.。
标签: typescript import module export typescript-typings