【发布时间】:2021-07-02 23:44:37
【问题描述】:
添加边缘方法会抛出此错误。我不知道这种情况下永远不会发生什么!
TS2345:'string | 类型的参数number' 不能分配给“never”类型的参数。
export class Graph {
adjacencyList: { [key in string | number]: string[] | number[] } = {};
addVertex(vertex: string | number): void {
this.adjacencyList[vertex] = [];
}
addEdge(vertex1: string | number, vertex2: string | number): void {
this.adjacencyList[vertex1].push(vertex2);
this.adjacencyList[vertex2].push(vertex1);
}
}
谢谢
【问题讨论】:
-
一个空数组从不[]。所以你需要把它添加到你的工会中
-
[key in string | number]: string[] | number[]--- 这最终是never[]因为没有办法静态地确保您推送到键的所有值都是相同的类型。所以 TS 试图找出一个可分配给string[]和number[]的类型——即never[]。例如:g.addEdge('foo', 'bar'); g.addEdge('foo', 42); -
@zerkms 谢谢,伙计们。我知道什么永远不会。但那我该怎么办?
-
您可以在一个属性中存储数字列表,在另一个属性中存储字符串列表。
-
把
adjacencyList的类型改成{ [key in string | number]: (string | number)[] }?
标签: typescript