- 引用:
- ts any、unknown、object、void、undefined、null 和 never 的类型兼容性
null 表示这里有值,但是个空值undefined 表示这里没有值null、undefined 是一个具有意义的实际类型null 值可以赋值给哪些类型?
var x1: any = nullvar x2: unknown = nullvar x3: object = null // 当 strictNullChecks: true 时会报错var x4: void = null // 当 strictNullChecks: true 时会报错var x5: undefined = null // 当 strictNullChecks: true 时会报错var x6: null = null
null 类型可以被哪些类型赋值?
const a1 = 1 as unknown as anyconst a2 = 1 as unknown as undefinedconst a3 = 1 as unknown as nullconst a4 = 1 as unknown as nevervar x1: null = a1var x2: null = a2 // 当 strictNullChecks: true 时会报错var x3: null = a3var x4: null = a4
undefined 值可以赋值给哪些类型?
var x1: any = undefinedvar x2: unknown = undefinedvar x3: object = undefined // 当 strictNullChecks: true 时会报错var x4: void = undefinedvar x5: undefined = undefinedvar x6: null = undefined // 当 strictNullChecks: true 时会报错
undefined 类型可以被哪些类型赋值?
const a1 = 1 as unknown as anyconst a2 = 1 as unknown as undefinedconst a3 = 1 as unknown as nullconst a4 = 1 as unknown as nevervar x1: undefined = a1var x2: undefined = a2var x3: undefined = a3 // 当 strictNullChecks: true 时会报错var x4: undefined = a4
strictNullChecks 表示“严格的空值检查”,它是 TypeScript 的一个编译选项。- 当开启
strictNullChecks 选项时,null 和 undefined 值将不再被认为是所有类型的子类型。这有助于在 ts 代码中捕获潜在的空值引用错误。 strictNullChecks 默认值是 false- 实践:请在
tsconfig.json 中开启 strictNullChecks 配置,打开更严格的 null 类型检查。
{ "compilerOptions": { "strictNullChecks": true }}