最近开始使用 typescript。可是该死的在JavaScript里没报错的代码到了typescript里就报错了
这类型检查真的不知道如何改。
在线等大神解答
data() {
return {
list: [] //初始化
};
},
async getList() {
this.list = await Tanks.get();
},
加上Promise<any>还是报错
最近开始使用 typescript。可是该死的在JavaScript里没报错的代码到了typescript里就报错了
这类型检查真的不知道如何改。
在线等大神解答
data() {
return {
list: [] //初始化
};
},
async getList() {
this.list = await Tanks.get();
},
加上Promise<any>还是报错
一年后,我大概知道原因是什么样的了:
data() {
return {
list: [] //初始化
};
},
这里,ts默认初始化空数组为 never[] 类型,和await Tanks.get() 拿到的值类型不匹配,应该这样
data() {
return {
list: [] as any[] //或者 as Tanks.get()的数组类型。
};
},
使用 typescript 的话,各种类型声明最好都显示的提供,不然 ts 的类型自动推断出的类型很可能不是你理想中的那个。
另外,十分不推荐 ts 和 js 混合使用,除非是要重构项目。
2 回答12.6k 阅读✓ 已解决
5 回答7.1k 阅读✓ 已解决
5 回答8.2k 阅读
2 回答10.3k 阅读✓ 已解决
2 回答10.4k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
4 回答6.1k 阅读
请把代码贴全一些, this.list 是什么类型的? task.get 返回的类型怎么声明的?
一般来说async 返回一个 promise, 所以你需要声明一个 Promise 的泛型, 但是 resolve 和 reject 的返回可能不同, 你大概率是一个 联合泛型, 类似 Promise<Object | string> 之类的, 或者直接 any 。
你提供的信息太少了。
不过还可以给你一个 万能招数: ignore, 很不建议。
// @ts-ignore