获取客户端在 JSON 数组分配方面存在问题



Aurelia获取客户端文档有一个获取json数据的基本示例:

bind() {
    let client = new HttpClient();
    return client.fetch('data.json')
        .then(response => response.json())
        .then(data => {
            console.log(data[1]);
        });
}

以上工作正常,但以下内容不行:

files = [];
bind() {
    let client = new HttpClient();
    return client.fetch('data.json')
        .then(response => response.json())
        .then(files => this.files = files);
}

Gulp 现在抱怨"错误 TS2322:类型'响应'不可分配给类型'any[]'。

更奇怪的是,我现在在控制台中收到 XHR 404 错误。这是没有道理的;data.json文件在第一次被发现和获取时没有问题。第二个代码片段的唯一区别是,我实际上没有将数据记录到控制台,而是尝试用它做一些事情。

我相信

您的特定问题可能是由旧版本的 TypeScript(2.1,最新版本是 2.5)引起的。如果有机会,可以尝试更新它。

语句中的response response =>属于Aurelia定义的类型Response。当你运行this.files = files时,似乎 TypeScript 认为filesResponse 型。您已经隐式声明this.files为 类型 any[] ,因此不允许赋值。

您可以通过为 files 设置显式类型来解决此问题,甚至仅使用 any

.then((files: any[]) => this.files = files);

我会尽量避免使用any来解决类型安全并使用类型,但是您遇到的问题似乎是您正在使用的TypeScript和/或Aurelia版本中的错误。

最新更新