空值:

JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

function test(): void {
    alert('My name is Tom');
}

声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null(只在 –strictNullChecks 未指定时):

let unusable: void = undefined;

Null 和 Undefined

在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:

let u: undefined = undefined;
let n: null = null;

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:

// 这样不会报错
let num: number = undefined;
let str: string = null;

// 这样也不会报错
let u: undefined;
let n: null;
let num: number = u;
let str: string = n;

而 void 类型的变量不能赋值给 number 类型的变量:

let u: void;
let num: number = u;

// Type 'void' is not assignable to type 'number'.

注意:tsconfig.json 里的 “strictNullChecks”: false 时,以上代码才能通过

另外可参考 阮老师的 关于 js 中的 null 和 undefined 的解释 undefined与null的区别