typescript:类型放宽

类型放宽

在编译器进行类型推断的过程中,有时会将放宽的源类型作为推断的结果类型

类型放宽是TypeScript语言的内部行为,它并非是提供给开发者的某种功能特性

typescript内部存在两种放宽形式:

  • 常规类型放宽
  • 字面量类型放宽

常规类型放宽

编译器在进行类型推断时会将undefined类型和null类型放宽为any类型

非严格类型检查模式

没有启用“–strictNullChecks”编译选项时,undefined类型和null类型会被放宽为any类型

严格类型检查模式

在启用了“–strictNullChecks”编译选项时,不在对undefined和null放宽类型,它们保持自身的类型

字面量类型放宽

编译器在进行类型推断时会将字面量类型放宽为基础原始类型

并不是所有的字面量类型都会放宽,字面量类型分为可放宽的字面量类型和不可放宽的字面量类型,怎么判断字面量类型是哪一种呢

判断字面量类型是可放宽的还是不可放宽的遵循以下规则:

  • 如果字面量类型源自类型,那么它是不可放宽的字面量类型
  • 如果字面量类型源自表达式,那么它是可放宽的字面量类型

字面量放宽的场景

当编译器进行类型推断时,如果当前表达式的值是可变的,那么将推断出放宽的字面量类型;反之,如果当前表达式的值是不可变的,那么不放宽字面量类型

你可能感兴趣的:(typescript,typescript,javascript,前端)