类型“number”的参数不能赋给类型“never”的参数。
来源:7-11 函数重载与可调用注解

codeyjw
2022-11-15
不对,我想问的是这里为什么提示这个,哪个类型是never?
1回答
-
西门老舅
2022-11-16
你好
type A = (n: string)=>void
type B = (n: number)=>void
//------------------------------------
// 解释:string给string|number属于类型兼容性,正确写法,可以看类型兼容性小节的视频
// let c: (n: string) => void
let c: A = (n: string | number) => {}
// 解释:同上
// let c: (n: number) => void
let c: B = (n: string | number) => {}
//-------------------------------------
//------------------------------------
// 解释:string|number属性联合类型或的意思,后面string可以满足
// let c: (n: string) => void
let c: A | B = (n: string) => {}
// 解释:同上
// let c: (n: number) => void
let c: A | B = (n: number) => {}
//------------------------------------
//------------------------------------
// 解释:没有这种写法,所以导致参数类型为never,这样你传什么类型都会报错的
// let c: (n: never) => void
let c: A | B = (n: string | number) => {}
//------------------------------------
022022-11-16
相似问题