gpt4 book ai didi

javascript - 扩展 SVGTextElement 时 typescript 未捕获类型错误

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:20 24 4
gpt4 key购买 nike

我正在尝试为 SVGTextElement 创建一个简单的扩展,这里是:

interface SVGTextElement {
setX(value: string): SVGTextElement;
setY(value: string): SVGTextElement;
}

SVGTextElement.prototype.setX = (value: string): SVGTextElement => {
var el: SVGTextElement = this;
el.setAttribute("x", value);
return el;
}

SVGTextElement.prototype.setY = (value: string): SVGTextElement => {
var el: SVGTextElement = this;
el.setAttribute("y", value);
return el;
}

我是这样使用这个扩展的:

const e = document.createElementNS("http://www.w3.org/2000/svg", "text");
e.setX("0");

但是我得到了错误:

SvgTextElementExtensions.ts:18 Uncaught TypeError: el.setAttribute is not a function

我做错了什么?

最佳答案

你不应该在这里使用粗箭头语法,它会将 this 绑定(bind)到 window,而 window 没有 setAttribute。这样做:

SVGTextElement.prototype.setX = function (value: string): SVGTextElement {
var el: SVGTextElement = this;
el.setAttribute("x", value);
return el;
}

SVGTextElement.prototype.setY = function (value: string): SVGTextElement {
var el: SVGTextElement = this;
el.setAttribute("y", value);
return el;
}

关于javascript - 扩展 SVGTextElement 时 typescript 未捕获类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37320824/

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