我正在使用here中nightmare
类的类型。这是通过npm install @types/nightmare
我想扩展现有类型,而无需修改node_modules的index.d.ts。特别是通过添加action()
和evaluate_now()
方法。
action()
是静态方法。
这就是我所做的 我在项目根文件夹中创建了一个自定义类型文件
custom-typings.d.ts
declare namespace Nightmare {
export class Nightmare {
evaluate_now<T1, T2, R>(
fn: (arg1: T1, done: T2) => R,
done: T2,
arg1: T1
): Nightmare;
static action<T1, T2, R>(name: string, fn: (arg1: T1, done: T2) => R): void;
}
}
在我的主应用程序文件中,有以下内容
index.ts
/// <reference path='custom-typings.d.ts'/>
import Nightmare = require('nightmare');
function size(this: Nightmare, done: any) {
this.evaluate_now(() => {
const w = Math.max(
document.documentElement.clientWidth,
window.innerWidth || 0
);
const h = Math.max(
document.documentElement.clientHeight,
window.innerHeight || 0
);
return {
height: h,
width: w
};
}, done);
}
Nightmare.action('size', size);
// no errors here from the types declared by the @types in node_modules.
new Nightmare()
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('.searchsubmit');
我遇到以下错误
我正在使用Typescript3。似乎未检测到我的自定义键入。我一直在浇注declaration merging documents,但不知道自己在做什么错。
谢谢
答案 0 :(得分:1)
您在7
中声明的全局名称空间与模块无关。相反,您需要扩展模块:
custom-typings.d.ts
但是,declare module "dummy" {
module "nightmare" {
// ...
}
}
类是按原始类型(Nightmare
)导出分配的,并且AFAIK导出分配的类目前无法扩充;参见this previous answer。因此,您必须将export = Nightmare
的修改后的副本添加到您的项目中。