下面是详细讲解“ts中的void和never类型及区别”的完整攻略。
Void类型
Void
类型表示函数没有返回值(或值为undefined)。在TS中,定义函数时可以显式指定函数的返回类型为void
,例如以下代码:
function sayHello(): void {
console.log("Hello!");
}
上述代码中,定义了一个名为 sayHello
的函数,并将其返回类型指定为 void
。这意味着函数 sayHello
没有返回值,其执行完毕后,不会有任何东西被返回。
在TS中,指定void
类型的变量只能赋值为 undefined
或 null
,这是因为它们是唯一的拥有值的“子项”。
以下示例展示如何定义void
类型变量并将其赋值为 undefined
或 null
。
let voidVal: void = undefined;
let voidVal2: void = null;
Never类型
Never
类型表示永远不会出现的值的类型。在TS中,Never
类型用于处理异常或处理程序中的无限循环等无法正常结束的情况。如果一个函数抛出异常或者进入无限循环,该函数的返回类型就应该是 never
。以下是示例代码:
function throwError(msg: string): never {
throw new Error(msg);
}
function endlessLoop(): never {
while(true) {
// do something
}
}
上述代码中,throwError
函数在抛出异常后不会返回任何值,因为它本应该在异常抛出后停止执行并返回值,但是抛出异常后并不会完成这些操作。这就是为什么它的返回类型是 never
。
同样地,endlessLoop
函数会无限循环,它永远不会返回任何值,因为函数无限执行。也就是说,该函数的返回类型仍然应该是 never
。
Void与Never类型区别
尽管void
和never
都表示返回值不存在,但它们之间还是存在许多细微差别:
- 当函数没有返回值时,应该使用
void
类型,而不是never
类型。 never
类型用于表示函数可能抛出异常或发生错误等无法正常结束运行的情况。void
类型,定义函数的返回值为空,但不代表该函数不能正常返回运行。void
类型可以被赋值为undefined
或null
,而never
类型不能赋值给任何类型。
以上是“ts中的void和never类型及区别”的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ts中的void和never类型及区别 - Python技术站