typescript - 在自定义定义中引用全局声明的命名空间类型
问题描述
关于这个主题有一个过去的问题,但没有发布答案:
如何导入顶级元素是非导出命名空间的 Typescript 类型定义文件?
我想为 建立一个类型testdouble-jest
,但其导出函数中的第二个参数是全局jest
实例,它被声明@types/jest
为顶级声明的命名空间:
declare namespace jest {
mock(): something
// ...
}
编辑:这里是类型:https ://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jest/index.d.ts
如何在我的test-double.d.ts
声明中引用这个全局对象?我的声明如下所示,但部分成功:
/// <reference types="jest" />
// do i actually need the above directive?
declare module "testdouble-jest" {
import * as td from "testdouble"; // the testdouble stuff works
export type TestdoubleJest = typeof td & {
mock: typeof jest.mock; // this actually appears to work
};
function setupTestdoubleJest(
testdouble: typeof td,
jest: typeof jest // this just resolves to any
): TestdoubleJest;
export = setupTestdoubleJest;
}
如果有人知道如何做到这一点,我将不胜感激!
编辑 2: 有一些关于肯定类型的例子,人们要么增加了 'jest' 命名空间,要么使用它的成员(就像我做的那样jest.mock
),但我找不到一个指的是实际的全局jest
对象。
解决方案
代替
/// <reference types="jest" />
和
/// <reference types="@types/jest" />
这个对我有用。
推荐阅读
- python - 两个子图出来太长(长度)
- php - 已弃用:非静态方法。如何在路由类中将其分开?
- java - 无法从 arduino 发送数据
- node.js - Nodejs socket.io 客户端无法连接到 Nodejs socket.io 服务器
- mysql - Vb.Net使用组合框过滤Datagridview
- maven - com_atlassian_clover 包不可见
- java - 单击按钮并作为后台进程运行时发出 url
- npm - 运行 npm install 不会产生锁定文件
- python - 在 python 中将文本文件读取到字典的问题
- wordpress - macOS 上的 XAMPP WordPress 权限