我无法理解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;
};
...
}
以下列方式实施弧...
svg.selectAll(".arc")
.attr("d", function (d) {
return d3.svg.arc().outerRadius(
function (d) {
return d - 9;
})
...
我收到错误:“参数类型函数不能分配给参数类型函数”
所以
function (d) {return d - 9;})
似乎对该接口无效,即使它似乎是
类型 (): (data: any, index?: number) => number;
我想我会监督一些显而易见的事情......我现在卡住了
由于
答案 0 :(得分:4)
我遇到类似转换字符串的问题,并通过添加明确的类型转换来修复它:
$.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;
})
...
因为错误在于功能和功能之间的区别。