获取 JSON 数组分配有问题的客户端
Fetch client having an issue with JSON array assignment
Aurelia fetch 客户端文档有一个获取 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 现在抱怨 "error TS2322: Type 'Response' is not assignable to type '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 and/or 您正在使用的 Aurelia。
Aurelia fetch 客户端文档有一个获取 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 现在抱怨 "error TS2322: Type 'Response' is not assignable to type '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 and/or 您正在使用的 Aurelia。