TyepScirpt中void和never的区别

在TypeScript中,void和never都用于表示特定的类型,它们有一些区别,并且在不同的使用场景中有不同的用途。

  1. void类型
    • void表示函数没有返回值。当一个函数不需要返回任何值时,可以将其返回类型标注为void,或者不写返回类型(默认为void)
    • 不能将任何值赋值给void类型(null和undefined可以赋值给void类型)。
    • void类型常用于定义没有返回值的函数。
function sayHello(): void {
	console.log("hello");
};

const result: void = sayHello(); // 返回值为undefined
  1. never类型
    • never表示那些永远不会发生的值的类型
    • never类型是所有类型的子类型,即可以赋值给其他任何类型。但反过来,除了never类型本身之外,没有任何其他类型可以赋值给never类型。
    • never类型通常用于表示无法正常结束的函数返回类型,例如抛出错误,死循环或永远不会执行完的函数。
function throwError(message: string): never {
	throw new Error(message);
};

function infiniteLoop(): never {
	while(true) {
		console.log('This is an infinite loop');
	};
};

function unreachableCode(): never {
	return throwError('Unreachable code'); // 永远不会执行到这里
}
  1. 使用场景
    • void类型适用于那些没有返回值的函数,例如只负责执行某些操作但不需要返回结果的函数。
    • never类型适用于诸如抛出异常,死循环或永远不会执行完的函数等场景。它可以帮助编译器进行更细致的类型推断,并且可以用于确保某些代码逻辑不会被执行。
  2. 总结
    • void表示函数没有返回值,可以用于函数的返回类型注解。
    • never表示那些永远不会发生的值的类型,常用于具有异常,无限循环或不可达代码的函数的返回类型注解。

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