我试图用一种方法扩展Puppeter的类ElementHandle。我已经检查了一些例子,并编写了简单的代码,就像这个答案一样。
但是VSCode显示了我更改ElementHandle prototype所在行的一个错误:
“ElementHandle”仅引用类型,但在此处用作值。ts(2693)
我怎么才能修好它?
我的代码:
import { ElementHandle } from 'puppeteer';
declare module 'puppeteer' {
interface ElementHandle {
scrollIntoView(): void;
}
}
ElementHandle.prototype.scrollIntoView = async function (): Promise<void> {
await this._scrollIntoViewIfNeeded();
}
ElementHandle类:https://github.com/puppeteer/puppeteer/blob/master/src/JSHandle.js
您看到的错误消息是准确的:在Puppeter的情况下,ElementHandle
指的是类型,而不是类/对象/值。
在TypeScript中,类型仅在编译时存在。然后,在运行时,它们根本不存在,它们被完全删除。
因此,声明:
js prettyprint-override">ElementHandle.prototype.scrollIntoView = async function() { /* */ }
不行。由于ElementHandle是唯一的类型,它在运行时不存在,因此无法发送。prototype
消息,试图访问它。
这里的一种解释是,ElementHandle
只是木偶师处理的一些实体的抽象表示,而不是具有实体和/或可用作模板的引用,如类。
因此,不可能像您希望的那样为其分配函数(或任何值)来“扩展”它。
我使用的是Typescript 3.2。2、无法实现最基本的类型防护: 这将产生源自。是否需要配置来启用此语法?
假设我有以下类型: 我现在想扩展这个类型,即。 这行不通。我该怎么做?
我试图为我的AWS Lambda使用Typescript,我在使用promise时遇到了以下错误。 我尝试在代码中使用以下变体 我尝试了I Get中提到的解决方案:[ts]'Promise'只引用类型,但在这里被用作值,但没有运气。
javabeans新手,如果这太简单了,请原谅我: 在编写javabean页面时得到此错误。代码基本上要求将7个值加在一起,然后将总数除以160。代码是: 我到底做错了什么?
问题内容: (我很惊讶无法在stackoverflow上找到这个问题,我只能归咎于糟糕的谷歌搜索,必须指出所有重复的问题…) 这是一个玩具类,它返回与您放入的玩具相反的东西。目前,它适用于整数,但只需要很小的改动就可以适用于String。 我想做的是使类通用,但仅适用于两个或三个可能的类型。所以我想写的是: 正确的语法是什么?我的Google-fu让我失败了… :( 编辑:似乎 没有 正确的语法,
我无法将字符串(生日)转换为整数(年龄)。我希望有人输入他们的出生年份,并让程序做一个简单的减法计算出他们的年龄。我是编程新手,所以我一直在四处寻找,大多数地方都告诉我同样的事情。 然而,在做了这些之后,当我尝试做数学时。。。 我得到了标题中的错误。 很抱歉,如果这是在错误的地方,这只是我在这里的第二个帖子。我只是点击“提问”并按照指示进行操作