首页 > 解决方案 > 如何将 json 响应传递给函数:“未知”类型的参数不可分配给“任何 []”类型的参数

问题描述

我正在尝试使用来自 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:“未知”类型的参数不可分配给“任何 []”类型的参数。类型“{}”缺少类型“any[]”的以下属性:length、pop、push、concat 等 26 个。

任何指导表示赞赏。

标签: javascriptjsontypescript

解决方案


您可以执行以下操作:

    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
           }
       );

推荐阅读