Typescript 类型脚本定义、ES6类和构造函数
我有一个TypeScript项目,我想使用npm的Typescript 类型脚本定义、ES6类和构造函数,typescript,typescript-typings,Typescript,Typescript Typings,我有一个TypeScript项目,我想使用npm的libmarkov。它提供了一个称为Generator的ES6可导入类。您可以通过新生成器('some text')使用它 在本地项目中,我创建了一个文件typedefs/libmarkov.d.ts: export class Generator { constructor(text: string); generate(depth: number); } 我使用typings安装它:typings安装--保存文件:./typ
libmarkov
。它提供了一个称为Generator的ES6可导入类。您可以通过新生成器('some text')
使用它
在本地项目中,我创建了一个文件typedefs/libmarkov.d.ts
:
export class Generator {
constructor(text: string);
generate(depth: number);
}
我使用typings
安装它:typings安装--保存文件:./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。因为这是一个js库,我怀疑您在加载它时会使用类似
import {Generator} from "libmarkov"
在这种情况下,外部模块定义必须如下所示
declare module "libmarkov" {
export class Generator {
constructor(text: string);
generate(depth: number);
}
}
编辑
这个定义是错误的;利伯马尔科夫似乎在使用
而进口将是
import Generator from 'libmarkov'
替换导出
为声明
如果替换为导出
,我仍然会收到关于新建
的错误。如果我在构造函数
的末尾添加{}
,我仍然会得到新的
错误,但也会得到错误:(2,31)TS1183:不能在环境上下文中声明实现
。是的,在运行键入
之后,键入/modules/libmarkov/index.d.ts
下的结果就是这样。我想,typings
将我的libmarkov.d.ts
包装在declare模块中。然而,我仍然被关于new
的错误所困扰;libmarkov似乎使用默认导出。请参见上面的编辑这里有一个问题可以帮助我理解环境/全局等。对于这个场景(在node\u modules
中的外部ES6模块),在我运行typings
之后,libmarkov
是否应该进入typings/globals
或typings/modules
?也就是说,我是做打字--全局--保存
还是只做打字--保存
?嗯,不太好。TypeScript生成的commonjs表示(意译)var libmarkov_1=require('libmarkov');新libu_1.默认值('Foo-Bar-zBaz')代码>。但是.default
未定义。请尝试const Generator=require('libmarkov');新生成器(“Foo-Bar”)
import Generator from 'libmarkov'