ts数据类型检查报错 Type 'void' is not assignable to type 'never[]'.

最近开始使用 typescript。可是该死的在JavaScript里没报错的代码到了typescript里就报错了
这类型检查真的不知道如何改。
在线等大神解答

data() {
    return {
      list: []   //初始化
    };
},
async getList() {
  this.list = await Tanks.get();
},

clipboard.png

clipboard.png

加上Promise<any>还是报错

clipboard.png

阅读 27.4k
3 个回答

请把代码贴全一些, this.list 是什么类型的? task.get 返回的类型怎么声明的?

一般来说async 返回一个 promise, 所以你需要声明一个 Promise 的泛型, 但是 resolve 和 reject 的返回可能不同, 你大概率是一个 联合泛型, 类似 Promise<Object | string> 之类的, 或者直接 any 。

你提供的信息太少了。

不过还可以给你一个 万能招数: ignore, 很不建议。

// @ts-ignore

一年后,我大概知道原因是什么样的了:

data() {
    return {
      list: []   //初始化
    };
},

这里,ts默认初始化空数组为 never[] 类型,和await Tanks.get() 拿到的值类型不匹配,应该这样

data() {
    return {
      list: [] as any[]   //或者 as Tanks.get()的数组类型。
    };
},

使用 typescript 的话,各种类型声明最好都显示的提供,不然 ts 的类型自动推断出的类型很可能不是你理想中的那个。

另外,十分不推荐 ts 和 js 混合使用,除非是要重构项目。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏