错误的类型参数分配错误
Error for wrong type parameter assignment
在我的部分代码中,我遇到了一个我无法解决的打字稿错误。作为测试,我对一个值进行了本地赋值,以查看如何修复它:
const t = ... // where t's type is: d3.Transition<SVGElement, ParseTreeHierarchyNode, SVGElement, IParseTreeRenderNode>
const tt: d3.Transition<Element, any, any, any> = t;
问题出在第一个类型参数上。 SVGElement
extends Element
所以它们应该是赋值兼容的。但是我收到此错误:
Type 'Transition<SVGElement, ParseTreeHierarchyNode, SVGElement, IParseTreeRenderNode>' is not assignable to type 'Transition<Element, any, any, any>'.
The types returned by 'selection().datum(...).datum(...).on(...)' are incompatible between these types.
Type 'ValueFn<SVGElement, any, void>' is not assignable to type 'ValueFn<Element, any, void>'.
Type 'Element' is not assignable to type 'SVGElement'.ts(2322)
特别注意最后一行。错误指出我会尝试将 Element
分配给 SVGElement
,这当然是不可能的。但实际上,那不是我正在做的。 Typescript 似乎以某种方式反转了赋值和错误。
我该怎么做才能解决这个问题?
我偶然发现了问题的根源:因为带有 D3.js 代码的文件本来是要在 vscode webview 中使用的,因此需要进行不同的编译。因此我将它排除在扩展的正常 TS 构建之外。
一旦我包含它,问题就消失了。不知道为什么,但这对我来说已经解决了,尽管现在创建了一个错误的输出文件(这是另一个问题)。
在我的部分代码中,我遇到了一个我无法解决的打字稿错误。作为测试,我对一个值进行了本地赋值,以查看如何修复它:
const t = ... // where t's type is: d3.Transition<SVGElement, ParseTreeHierarchyNode, SVGElement, IParseTreeRenderNode>
const tt: d3.Transition<Element, any, any, any> = t;
问题出在第一个类型参数上。 SVGElement
extends Element
所以它们应该是赋值兼容的。但是我收到此错误:
Type 'Transition<SVGElement, ParseTreeHierarchyNode, SVGElement, IParseTreeRenderNode>' is not assignable to type 'Transition<Element, any, any, any>'.
The types returned by 'selection().datum(...).datum(...).on(...)' are incompatible between these types.
Type 'ValueFn<SVGElement, any, void>' is not assignable to type 'ValueFn<Element, any, void>'.
Type 'Element' is not assignable to type 'SVGElement'.ts(2322)
特别注意最后一行。错误指出我会尝试将 Element
分配给 SVGElement
,这当然是不可能的。但实际上,那不是我正在做的。 Typescript 似乎以某种方式反转了赋值和错误。
我该怎么做才能解决这个问题?
我偶然发现了问题的根源:因为带有 D3.js 代码的文件本来是要在 vscode webview 中使用的,因此需要进行不同的编译。因此我将它排除在扩展的正常 TS 构建之外。
一旦我包含它,问题就消失了。不知道为什么,但这对我来说已经解决了,尽管现在创建了一个错误的输出文件(这是另一个问题)。