代码是:

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

我得到以下TS错误:

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

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


当前回答

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

您需要指定数组是什么,因为result =[]的返回类型为任意[]。通常情况下,你想要避免任何类型,因为根据微软的说法,它们意味着被用作“逃生舱口”。

结果是一个字符串数组的对象。

其他回答

错误:“any”类型的实参不能赋值给“never”类型的形参。

在tsconfig。json -

  "noImplicitReturns": false,

   "strictNullChecks":false,

解决方案:输入'never'

另一种方法是:

const result: any[] = [];

我在React函数组件中得到了相同的错误,使用useState钩子。

解决方案是在初始化时使用尖括号声明useState的类型:

// Example: type of useState is an array of string
const [items , setItems] = useState<string[]>([]); 

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

我找到的解决办法是

const [files, setFiles] = useState([] as any);