我有一个TypeScript项目,其中我想从npm使用libmarkov
。它提供了一个名为Generator的ES6可导入类。您可以通过new Generator('some text')
使用它。
在我的本地项目中,我创建了一个文件typedefs/libmarkov.d.ts
:
export class Generator {
constructor(text: string);
generate(depth: number);
}
我使用typings
进行安装:typings install --save file:./typedefs/libmarkov.d.ts
然而,这:let generator = new Generator('Foo Bar Baz');
...生成此编译器错误:
Error:(5, 21) TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
我可以更改我的构造函数:constructor(text: string) {};
......但是这给出了:
Error:(2, 31) TS1183: An implementation cannot be declared in ambient contexts.
如果重要,我会以TS 2.0为目标。
答案 0 :(得分:3)
由于这是一个js库,我怀疑你用
之类的东西加载它import {Generator} from "libmarkov"
在这种情况下,您的外部模块定义必须类似于
declare module "libmarkov" {
export class Generator {
constructor(text: string);
generate(depth: number);
}
}
修改强> 定义错了; libmarkov似乎使用a default export。
declare module "libmarkov" {
export default class Generator {
constructor(text: string);
generate(depth: number);
}
}
导入将是
import Generator from 'libmarkov'