面试题答案
一键面试在TypeScript中,(a: number) => void
类型的函数可以赋值给 (a: number | string) => void
类型的函数。
原因如下:
- 函数参数兼容性规则:在TypeScript里,函数参数类型遵循逆变(contravariant)规则。这意味着当进行赋值时,目标类型的参数类型范围需要比源类型更宽泛(或者相等)。
- 对于
(a: number) => void
,它的参数只能接受number
类型的值。 - 而
(a: number | string) => void
,其参数可以接受number
类型或者string
类型的值。 - 显然,
number | string
类型比number
类型更宽泛,满足函数参数类型的逆变规则。所以(a: number) => void
类型的函数能赋值给(a: number | string) => void
类型的函数。