我正试图使用api中的数据在函数中使用它:
// Fetch JSON from an external endpoint
d3.json('https://api.jsonbin.io/b/5eee6a5397cb753b4d149343').then(data => this.drawBars(data));
private drawBars(data: any[]): void { ... }
但我遇到了这个错误,不知道如何解决:
错误TS2345:类型为"unknown"的参数不可分配给类型为"any[]"的参数。类型"{}"在类型"any[]"中缺少以下属性:length、pop、push、concat和其他26个属性。
感谢任何指导。
您可以执行以下操作:
d3.json('https://api.jsonbin.io/b/5eee6a5397cb753b4d149343')
.then(data => this.drawBars(data as any[]));
或者,如果你想确定它是一个数组,并避免"as"关键字:
d3.json('https://api.jsonbin.io/b/5eee6a5397cb753b4d149343')
.then(data => {
if(Array.isArray(data) {
this.drawBars(data)
} else {
// throw error or other logic
}
);
这是因为派生的数据类型是
unknown
,您正在尝试将其分配给数组类型的输入。
尝试以下
private drawBars(data: any): void { ... }