如果在对JavaScript感兴趣之前,您使用强类型的传统语言编写了代码,那么您可能已经熟悉
void
的概念。 这种类型的用法告诉程序员相应的函数和方法在调用时不返回任何内容。

void
实体在JavaScript和TypeScript中也可用。 在JS中,这是一个运算符。 在TS中,这是原始数据类型。 到处都是,
void
行为不像其他语言中遇到
void
人所期望的那样。
JavaScript void语句
在JavaScript中,
void
运算符评估传递给它的表达式。 同时,无论对哪个表达式求值,
void
始终返回
undefined
。
let i = void 2;
为什么我们需要这样的运算符?
首先,应该指出的是,在JS编程的早期,开发人员可以重新定义
undefined
并为其编写一些值。 但是
void
总是返回
undefined
的真实值。
其次,使用
void
运算符是使用立即调用的函数的一种有趣方式:
void function() { console.log('What') }()
所有这些-不会污染全局名称空间:
void function aRecursion(i) { if(i > 0) { console.log(i--) aRecursion(i) } }(3) console.log(typeof aRecursion)
由于
void
运算符总是返回
undefined
并且总是对传递给它的表达式求值,因此我们可以采用一种非常有表现力的方式从函数返回而不返回任何值,但是可以通过调用(例如一些回调)来进行:
这使我们找到了使用
void
的最重要方法。 该操作员是一种“岗哨”应用程序。 如果某个函数应始终返回
undefined
,则可以使用
void
运算符来实现。
button.onclick = () => void doSomething();
TypeScript中的无效数据类型
TypeScript中的
void类型可以称为
any
的相反类型。 JavaScript中的函数总是返回某些内容。 这可以是程序员设置的值,也可以是
undefined
:
function iHaveNoReturnValue(i) { console.log(i) }
由于未明确返回任何内容的JavaScript函数总是返回
undefined
,因此TypeScript中的
void
是告诉开发人员该函数返回
undefined
的合适类型:
declare function iHaveNoReturnValue(i: number): void
类型形式的
void
实体也可以用于参数和任何其他变量声明。 始终可以传递给void参数的唯一值是
undefined
。
declare function iTakeNoParameters(x: void): void iTakeNoParameters() // iTakeNoParameters(undefined) // iTakeNoParameters(void 2) //
结果,事实证明,在TS中,
void
和
undefined
类型几乎是同一回事。 但是它们之间只有一个小差异,而实际上这是非常重要的。 返回的
void
类型可以替换为其他类型,从而允许您实现用于回调的高级模式。
function doSomething(callback: () => void) { let c = callback()
开发人员希望通常在JS应用程序中使用的此类设计能够做到这一点。
这是有关此主题
的材料。
如果要让一个函数只接受返回
undefined
函数,则可以相应地更改方法签名:
总结
JavaScript中的
void
运算符和TypeScript中的
void
数据类型是相当简单的实体。 它们适用的情况范围是有限的。 但是,应注意,使用它们的程序员很可能在使用它们时不会遇到任何问题。
亲爱的读者们! 您在JS和TS中使用
void
吗?
