我正在尝试为我们的项目扩充Sinon类型定义,这是Sinon.d.ts
的定义方式
declare module 'sinon' {
module Sinon {
interface SinonStub extends SinonSpy {
...
}
interface SinonStatic { ... }
...
}
var Sinon: Sinon.SinonStatic;
export = Sinon;
}
我有一个
definitions.d.ts
,可在我的项目中用于任何自定义定义。这是我尝试执行的操作:declare module 'sinon' {
module Sinon {
interface SinonPromise {
resolves(value?: any): void;
rejects(value?: any): void;
}
interface SinonStub {
returnsPromise(): SinonPromise;
}
}
}
但是编译器无法识别
returnsPromise
接口(interface)中的新SinonStub
,也无法识别新的SinonPromise
类型。这个定义有什么问题?
最佳答案
我相信您的案子需要解决方法。您拥有的定义文件不export
任何类型定义,因此它们不能扩展到该文件之外。
我猜您是通过sinon
安装了typings install sinon
的。如果执行typings search sinon
,则实际上有2个,一个来自npm
,一个来自dt
。默认安装npm
定义。这是 dt
definition的样子:
declare namespace Sinon {
// ...
interface SinonStub extends SinonSpy {
// ...
}
// ...
}
declare var sinon: Sinon.SinonStatic;
declare module "sinon" {
export = sinon;
}
还有一个sinon-stub-promise的
dt
条目,与上面的代码很好地配合:declare namespace Sinon {
interface SinonPromise {
resolves(value?: any): void;
rejects(value?: any): void;
}
interface SinonStub {
returnsPromise(): SinonPromise;
}
}
因此,这是解决方法:
sinon
类型。 sinon
安装DefinitelyTyped类型:typings install sinon --source dt --global
sinon-stub-promise
安装DefinitelyTyped类型:typings install sinon-stub-promise --source dt --global
现在可以成功编译:
/// <reference path="typings/index.d.ts" />
import * as sinon from 'sinon';
sinon.stub().returnsPromise();
关于typescript - 增强TypeScript模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38770726/