代码是:

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

我得到以下TS错误:

string类型的实参不能赋值给never类型的形参。

我做错了什么?这是一个bug吗?


当前回答

你需要输入result到字符串const result的数组:string[] =[];。

其他回答

你所要做的就是将结果定义为一个字符串数组,如下所示:

const result : string[] = [];

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

当您在没有设置对象属性的情况下设置对象中的属性值时,会发生此错误。声明带有属性的对象类型,然后在实例化对象时分配该类型。现在您可以设置属性值而不会出现此错误。

你需要输入result到字符串const result的数组:string[] =[];。

另一种方法是:

const result: any[] = [];

从"compilerOptions"中删除"strictNullChecks": true或在tsconfig中将其设置为false。这些错误会像任何东西一样消失,你的应用程序将成功编译。

免责声明:这只是一个变通方案。此错误仅在null检查未正确处理时出现,这在任何情况下都不是完成工作的好方法。