在 TypeScript 中,空类型(void)和 undefined 类型常常被混淆使用。本文将详细介绍它们之间的区别,以及在实际开发中如何使用它们。
空类型(void)
空类型(void)表示函数没有返回值。在 TypeScript 中,可以使用 void
关键字来声明一个函数的返回值类型为空类型。
function sayHello(): void { console.log('Hello World!'); }
空类型的变量只能被赋值为 undefined
或者 null
,因为它们是 JavaScript 中的唯一两个表示空值的值。如果尝试将空类型的变量赋值为其他类型的值,TypeScript 编译器会报错。
let a: void; a = undefined; // 合法 a = null; // 合法 a = 123; // 报错:Type '123' is not assignable to type 'void'.
空类型通常用于声明回调函数、异步函数等没有返回值的函数。
undefined 类型
undefined 类型表示一个变量被声明但没有被赋值时的类型。在 TypeScript 中,可以使用 undefined
关键字来声明一个变量的类型为 undefined。
let a: undefined; console.log(a); // undefined
undefined 类型的变量只能被赋值为 undefined
,不能被赋值为其他类型的值。如果尝试将 undefined 类型的变量赋值为其他类型的值,TypeScript 编译器会报错。
let a: undefined; a = undefined; // 合法 a = null; // 报错:Type 'null' is not assignable to type 'undefined'. a = 123; // 报错:Type '123' is not assignable to type 'undefined'.
在实际开发中,undefined 类型通常用于判断一个变量是否被赋值。例如:
let a: number | undefined; if (typeof a === 'undefined') { console.log('a is not defined'); } else { console.log(`a is ${a}`); }
总结
空类型和 undefined 类型在 TypeScript 中有着不同的含义和用途。空类型表示函数没有返回值,undefined 类型表示一个变量被声明但没有被赋值时的类型。在实际开发中,应该根据具体的需求来选择使用哪种类型。
同时,需要注意的是,空类型的变量只能被赋值为 undefined
或者 null
,而 undefined 类型的变量只能被赋值为 undefined
。如果尝试将它们赋值为其他类型的值,TypeScript 编译器会报错。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/653b6e4e7d4982a6eb5c5f1d