gpt4 book ai didi

javascript - typescript : Argument Type Function is not assignable to parameter type function

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

我无法理解 Webstorm IDE 中的以下 TypeScript 错误消息(对 TypeScript 很陌生,很抱歉......)

我正在使用 DefinitelyTyped 存储库中的 d3.d.ts 来使用 d3js 实现图形,其中 d3.svg.arc() 方法的接口(interface)定义如下:

export interface Arc { 
...
outerRadius: {
(): (data: any, index?: number) => number;
(radius: number): Arc;
(radius: () => number): Arc;
(radius: (data: any) => number): Arc;
(radius: (data: any, index: number) => number): Arc;
};
...
}

当以下列方式实现圆弧时......

svg.selectAll(".arc")    
.attr("d", function (d) {
return d3.svg.arc().outerRadius(
function (d) {
return d - 9;
})
...

我收到错误:“参数类型函数不可分配给参数类型函数”

所以

 function (d) {return d - 9;})

似乎对该接口(interface)无效,即使它看起来是这种类型

 (): (data: any, index?: number) => number;

我想我监督了一些显而易见的事情......我现在卡住了

谢谢

最佳答案

我在字符串到数字转换方面遇到了类似的问题,并通过添加显式类型转换来修复它,例如:

$.replace(/text/g, <string>$.now()); .

只需记下 <string>在参数之前。

只需尝试进行类型转换并告诉它如何进行。

在您的情况下,它将类似于:

svg.selectAll(".arc")    
.attr("d", function (d) {
return d3.svg.arc().outerRadius(
<Function>function (d) {
return d - 9;
})
...

或者也许:

svg.selectAll(".arc")    
.attr("d", function (d) {
return d3.svg.arc().outerRadius(
<function>function (d) {
return d - 9;
})
...

因为错误在于Functionfunction的区别。

关于javascript - typescript : Argument Type Function is not assignable to parameter type function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568602/

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