Я использую тип для класса nightmare
из здесь .Это установка через npm install @types/nightmare
Я бы хотел расширить существующие типы без изменения index.d.ts из node_modules.В частности, добавив методы 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');
Я получаю следующие ошибки
- Property 'valu_now 'не существует в типе' Nightmare '.
- Свойство' action 'не существует в типе' typeof Nightmare '.
Я использую Typescript 3. Похоже,мои пользовательские наборы не обнаруживаются.Я поливал декларацию о слиянии документов , но я не знаю, что я делаю не так.
Спасибо