当前位置: 首页 > 知识库问答 >
问题:

typescript中的“不可分配给never类型的参数”错误是什么?

闻人景澄
2023-03-14

代码是:

const foo = (foo: string) => {
  const result = []
  result.push(foo)
}

我得到以下TS错误:

"[ts]类型"string"的参数不能分配给类型"ever"的参数。"

我做错了什么?这是虫子吗?

共有3个答案

乐城
2023-03-14

这似乎是typescript中的一些奇怪的行为,因为遗留的原因,他们一直在使用这些行为。如果您有代码:

const result = []

通常,它会被视为你写的:

const result:any[] = []

但是,如果您在tsconfig中同时具有noInimplityanyFALSE和严格的NullChecksTRUE,则将其视为:

const result:never[] = []

恕我直言,这种行为违背了所有的逻辑。打开空检查会改变数组的条目类型??然后再打开noInimplityany实际上恢复了any的使用,没有任何警告??

当您真的有一个any数组时,您不需要用额外的代码来指示它。

单于楚
2023-03-14

另一种方式是:

const result = [] as  any;
秦钟展
2023-03-14

您只需将结果定义为字符串数组,如下所示:

const result : string[] = [];

如果不定义数组类型,默认情况下它将是从不。因此,当您尝试向其添加字符串时,它是类型不匹配的,因此它抛出了您看到的错误。

 类似资料: