TypeScript--Never

Never

never 是指没法正常结束返回的类型。

  • 一个必定会报错或者死循环的函数会返回这样的类型。
// ⚠️never
function errorNever(): never {
    throw new Error('error')
}
  • 永远没有相交的类型
// ⚠️never
type CrossNever1 = 'boy' & 'girl'

// ⚠️never
type CrossNever2 = 1 & 2

// ⚠️never
type CrossNever3 = true & false
  • never 相交的类型
// ⚠️never
type CrossNever1 = 'boy' & never

// ⚠️never
type CrossNever2 = 1 & never

// ⚠️never
type CrossNever3 = true & never

// ⚠️never
type CrossNever4 = {name: string} & never
  • 任何类型联合上 never 类型,还是原来的类型
// 'string'
type UnionNever1 = 'string' | never

// 1 | 2
type UnionNever2 = 1 | 2 | never

// true | false
type UnionNever3 = true | false | never

// {age: number}
type UnionNever4 = {age: number} | never

其它特性

  • 在一个函数中调用了返回 never 的函数后,之后的代码都会变成 Unreachable code detected.
function unReachable() {
    errorNever()
    // ⚠️Unreachable code detected.
    const someObject = 'someObject'
    console.log(someObject)
}
  • 无法把其他类型赋给 never
let obj_never: never

// ❌错误
// Type 'string' is not assignable to type 'never'.
obj_never = 'string'

// ❌错误
// Type 'null' is not assignable to type 'never'.
obj_never = null

// ❌错误
// Type 'undefined' is not assignable to type 'never'.
obj_never = undefined

let obj_any: any = 'any'
// ❌错误
// Type 'any' is not assignable to type 'never'.
obj_never = obj_any
posted @ 2021-04-25 09:48  蓦然回首!  阅读(284)  评论(0编辑  收藏  举报