类型“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) => {}


//------------------------------------


0
2
西门老舅
回复
codeyjw
不客气的哈
2022-11-16
共2条回复

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

261 学习 · 182 问题

查看课程