TyepScirpt中void和never的区别

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 中 `never` `void` 类型的区别TypeScript 中,`never` `void` 是两种不同的类型,它们各自有特定的用途使用场景。 #### 1. `void` 类型 `void` 类型表示函数没有返回值或返回 `undefined`。它通常用于以下场景: - 函数没有返回值时,可以将其返回类型标注为 `void`[^3]。 - 变量被声明为 `void` 类型时,只能赋值为 `undefined` 或 `null`[^4]。 示例代码如下: ```typescript function logMessage(message: string): void { console.log(message); // 没有返回值 } let result: void = undefined; // 变量 result 的类型为 void,只能赋值为 undefined 或 null ``` #### 2. `never` 类型 `never` 类型表示那些永远不会发生的值的类型。它的主要用途包括: - 表示无法正常结束的函数返回类型,例如抛出错误、死循环或永远不会执行完的函数[^3]。 - `never` 是所有类型的子类型,可以赋值给其他任何类型,但没有任何其他类型(除了 `never` 本身)可以赋值给 `never`[^5]。 示例代码如下: ```typescript function throwError(message: string): never { throw new Error(message); // 抛出错误,函数不会正常结束 } function infiniteLoop(): never { while (true) { console.log('This is an infinite loop'); // 死循环,函数不会正常结束 } } ``` #### 3. 主要区别 - **定义与用途**:`void` 表示函数没有返回值或返回 `undefined`,而 `never` 表示永远不会发生的值的类型[^3]。 - **赋值规则**:`void` 类型变量可以赋值为 `undefined` 或 `null`,但 `never` 类型不能被任何值赋值,除非是 `never` 类型本身[^5]。 - **使用场景**:`void` 适用于没有返回值的函数,`never` 适用于抛出异常、死循环或不可达代码的函数。 通过合理使用这两种类型,可以确保代码逻辑的完整性正确性,并帮助编译器进行更细致的类型推断[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值