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 认为files
是 Response
型。您已经隐式声明this.files
为 类型 any[]
,因此不允许赋值。
您可以通过为 files
设置显式类型来解决此问题,甚至仅使用 any
:
.then((files: any[]) => this.files = files);
我会尽量避免使用any
来解决类型安全并使用类型,但是您遇到的问题似乎是您正在使用的TypeScript和/或Aurelia版本中的错误。