缺乏通话签名-Array.prototype.map()

时间:2019-04-05 21:56:01

标签: typescript

我是Typescript的新手,以下代码有问题。

foo(values: string[] | number[]) {
  const mappedValues = values.map((value) => {
    return (typeof value === 'number')
      ? value
      : `'${value}'`;
  });
}

打字稿抛出错误

Cannot invoke an expression whose type lacks a call signature. Type '(<U>(callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | (<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[])' has no compatible call signatures.

我尝试修复它,但没有成功。我该如何运作?

1 个答案:

答案 0 :(得分:1)

由于foo有两个调用签名(string []和int []),因此无法确定类型映射是否可用,尽管在本示例中foo可以解决它

foo(values: Array<string | number>) {
  const mappedValues = values.map((value) => {
    return (typeof value === 'number')
      ? value
      : `'${value}'`;
  });
}