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