我正在尝试为我们的项目增加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
接口中的新SinonStub
,也无法识别新的SinonPromise
类型。
这个定义有什么问题?
答案 0 :(得分:0)
我相信您的情况需要一种解决方法。您拥有的定义文件不会export
任何类型定义,因此无法将其扩展到该文件之外。
我猜你是通过sinon
安装了typings install sinon
。如果您typings search sinon
实际上有{1}来自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
:typings install sinon --source dt --global
sinon-stub-promise
:typings install sinon-stub-promise --source dt --global
现在成功编译:
/// <reference path="typings/index.d.ts" />
import * as sinon from 'sinon';
sinon.stub().returnsPromise();