gpt4 book ai didi

typescript - 增强 TypeScript 模块

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:12 24 4
gpt4 key购买 nike

我正在尝试为我们的项目增加 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;
}
}
}

但是编译器不识别SinonStub接口(interface)中新的returnsPromise,也不识别新的SinonPromise类型。

这个定义有什么问题?

最佳答案

我相信您的情况需要解决方法。您拥有的定义文件不会导出任何类型定义,因此它们无法扩展到该文件之外。

我猜你是通过 typings install sinon 安装了 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-promisedt 条目,它与上面的内容配合得很好:

declare namespace Sinon {
interface SinonPromise {
resolves(value?: any): void;
rejects(value?: any): void;
}

interface SinonStub {
returnsPromise(): SinonPromise;
}
}

所以,这是解决方法:

  1. 删除当前的 sinon 类型。
  2. sinon 安装 DefinitelyTyped 类型:typings install sinon --source dt --global
  3. 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com