gpt4 book ai didi

node.js - 为 Nightmare 延长打字时间

转载 作者:行者123 更新时间:2023-12-03 13:23:40 25 4
gpt4 key购买 nike

我正在使用 nightmare 的类型。来自 here 的类(class).这是通过 npm install @types/nightmare 安装的

我想在不修改 node_modules 中的 index.d.ts 的情况下扩展现有类型。特别是通过添加 action()evaluate_now()方法。action()是一种静态方法。

这是我所做的
我在我的项目根文件夹中创建了一个自定义类型文件

自定义类型.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');

我收到以下错误
  • 'Nightmare' 类型上不存在属性 'evaluate_now'。
  • “typeof Nightmare”类型不存在属性“action”。

  • 我正在使用 Typescript 3。看起来我的自定义类型没有被检测到。我一直在倾诉 declaration merging documents ,但我不知道我做错了什么。

    谢谢

    最佳答案

    您在 custom-typings.d.ts 中声明的全局命名空间与模块无关。相反,您需要扩充模块:

    declare module "dummy" {
    module "nightmare" {
    // ...
    }
    }

    但是, Nightmare类在原始类型( export = Nightmare )中是导出分配的,AFAIK 导出分配的类目前无法扩充;见 this previous answer .因此,您必须添加 @types/nightmare 的修改副本到你的项目。

    关于node.js - 为 Nightmare 延长打字时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52350542/

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