Typescript 类型脚本定义、ES6类和构造函数

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

我有一个TypeScript项目,我想使用npm的
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'