Javascript TypeScript:参数类型函数不可分配给参数类型函数

Javascript TypeScript:参数类型函数不可分配给参数类型函数,javascript,d3.js,typescript,Javascript,D3.js,Typescript,我无法理解Webstorm IDE中的以下TypeScript错误消息(TypeScript非常新,非常抱歉…) 我正在使用DefinitelyTyped存储库中的d3.d.ts来使用d3js实现图形,其中d3.svg.arc()方法的接口定义如下: export interface Arc { ... outerRadius: { (): (data: any, index?: number) => number; (radius: nu

我无法理解Webstorm IDE中的以下TypeScript错误消息(TypeScript非常新,非常抱歉…)

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

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;
        };
 ...
 }
以以下方式实施arc时

svg.selectAll(".arc")    
            .attr("d", function (d) {
                       return d3.svg.arc().outerRadius(
                              function (d) {
                                 return d - 9;
                              })
                        ...
我得到错误:“参数类型函数不可分配给参数类型函数”

所以

似乎对该接口无效,即使它似乎属于该类型

 (): (data: any, index?: number) => number;
我想我看到了一些明显的事情。。。我现在卡住了


谢谢

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

$.replace(/text/g,$.now())

只需注意参数前面的

试着用打字机把它打出来,然后告诉我是怎么回事

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

svg.selectAll(".arc")    
        .attr("d", function (d) {
                   return d3.svg.arc().outerRadius(
                          <Function>function (d) {
                             return d - 9;
                          })
                    ...
svg.selectAll(“.arc”)
.attr(“d”,函数(d){
返回d3.svg.arc().outerRadius(
职能(d){
返回d-9;
})
...
或者可能:

svg.selectAll(".arc")    
        .attr("d", function (d) {
                   return d3.svg.arc().outerRadius(
                          <function>function (d) {
                             return d - 9;
                          })
                    ...
svg.selectAll(“.arc”)
.attr(“d”,函数(d){
返回d3.svg.arc().outerRadius(
职能(d){
返回d-9;
})
...

由于错误在于函数函数

之间的差异,因此示例(简化)在操场上对我有效,而WebStorm不一定(可能不是)使用相同版本的TypeScript。尝试显式键入传递到outerRadius的函数,看看会发生什么。
outerRadius(函数(d:any):number{return d-9;});
非常感谢迪士尼-当我添加函数时,脚本不再编译,我得到一个“Type”()=>number'需要呼叫签名,但type'Function'缺少。“
svg.selectAll(".arc")    
        .attr("d", function (d) {
                   return d3.svg.arc().outerRadius(
                          <function>function (d) {
                             return d - 9;
                          })
                    ...