小编grk*_*kmk的帖子

Typescript 错误参数类型为“string |” number” 不可分配给“never”类型的参数

我正在使用 Typescript 编写一段代码,并遇到了以下问题,我无法理解为什么会发生这种情况。

下面的代码块Argument of type 'string | number' is not assignable to parameter of type 'never'在编译时触发错误。

interface A {
    x: number | string
}

const a1: A[] = [{x: 1}, {x: 'a'}]
const b: number[] | string[] = ['a', 'b']

const a2 = a1.filter(a => b.includes(a.x))
Run Code Online (Sandbox Code Playgroud)

然而; (number | string)[]如果我在声明/分配时使用b,它工作得很好。

includes我检查了( )的定义文件Array<T>.includes(searchElement: never, ...,但这也没有意义,因为我认为泛型T将包含number[] | string[].

如果有人能解释为什么Array<T>不覆盖number[] | string[]但覆盖,我将不胜感激(number | string)[]

generics types typescript

3
推荐指数
1
解决办法
3822
查看次数

标签 统计

generics ×1

types ×1

typescript ×1