Я пытаюсь использовать кошмар в машинописи с типами из DefinitelyTyped. однако типы там неполные (отсутствует метод then
), а еще я хочу добавить динамически некоторые методы (как это сделано в этот плагин).
Я не понимаю, как расширить интерфейс Nightmare без форка DefinitelyTyped. Я прочитал несколько страниц по этому вопросу:
Расширить интерфейс, определенный в файле .d.ts
http://obaidurrehman.github.io/2015/10/30/extending-typeScript-definitions/
Поэтому я попытался создать файл extendNightmare.d.ts
, который я поместил вместе со всеми остальными файлами .ts
.
declare namespace Nightmare {
class Nightmare {
waitForDevTools(): void;
then(): Nightmare;
}
}
На данный момент я не знаю, что делать, чтобы сказать компилятору использовать мое новое определение, которое должно расширять существующее.
Я попытался добавить эту строку вверху файла, используя кошмар, но это не сработало:
/// <reference path="./extendNightmare.d.ts"/>
Также я хотел бы расширить интерфейс IConstructorOptions
из пространства имен Nightmare
, но я не знаю, как это сделать. Это верно?
declare namespace Nightmare {
class Nightmare {
waitForDevTools(): void;
then(): Nightmare;
}
export interface IConstructorOptions {
switches: any;
}
}
Код, который я использую для воспроизведения этой проблемы:
/// <reference path="./extendNightmare.d.ts"/>
import * as Nightmare from "nightmare";
const switches = {
"ignore-certificate-errors": true,
"proxy-server": "localhost:10000",
};
function render_page(url) {
const options = {
switches,
};
const nightmare = new Nightmare(options);
nightmare
.goto(url)
.then((infos) => {
console.info(infos);
})
.end()
.then(() => {
console.info(`${url}: done`);
});
}
render_page("https://google.com");
В моем package.json
у меня есть:
"nightmare": "^2.9.1",
"@types/nightmare": "^1.6.30",
namespace
. - person Aluan Haddad   schedule 03.05.2017