const fn = () => {} // const fn: () => void let aa: never = fn() // 不能将类型“void”分配给类型“never”
never 类型的特点
never 类型会从联合类型中移除
1 2 3 4 5 6
type a = unknown | never // unknown type b = any | never // any type c = number | never // number type d = string | never // string type e = object | never // object type f = boolean | never // boolean
never 类型与任意类型的交叉类型都是 never
1 2 3 4 5 6
type g = unknown & never // never type h = any & never // never type i = number & never // never type j = string & never // never type k = object & never // never type l = boolean & never // never
never 可以赋值给任意类型
1 2 3 4 5 6 7
let m: never let n: unknown = m let o: any = m let p: number = m let q: string = m let r: object = m let s: boolean = m
其他类型不能赋值给 never
1 2 3 4
let t: never = 'a' // 不能将类型“string”分配给类型“never” let u: never = 123 // 不能将类型“number”分配给类型“never” let v: never = { a: 1 } // 不能将类型“{ a: number; }”分配给类型“never” let w: never = true // 不能将类型“boolean”分配给类型“never”