第1741期JavaScript和TypeScript中的void
Posted 前端早读课
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1741期JavaScript和TypeScript中的void相关的知识,希望对你有一定的参考价值。
前言
现在ts抓紧看起来。今日早读文章由腾讯@CoyPan翻译授权分享。
@CoyPan,一名符合预期的前端工程师
正文从这开始~~
如果你是从传统的强类型语言转到javascript来的,那么你可能熟悉void的概念:一种类型,它告诉你和方法在调用时不返回任何内容。
void在JavaScript中作为运算符存在,在TypeScript中作为基本类型存在。在JS和TS中,的用法和大多数人习惯的有所不同。
JavaScript中的void
JS中的void是一个运算符,它对紧跟其后的表达式求值。不管是什么表达式,void总是返回undefined。
let i = void 2; // i === undefined
为什么我们需要这么写?这是因为在早些时候,人们可以重写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) // undefined
由于void总是返回undefined,并且void总是会对表达式求值,所以有一个非常简单的方法,从函数返回而不返回值,但是仍然调用回调:
// returning something else than undefined would crash the app
function middleware(nextCallback) {
if(conditionApplies()) {
return void nextCallback();
}
}
我认为,void最重要的用法:因为void总是返回undefined,他是你app安全的守护者。
button.onclick = () => void doSomething();
TypeScript中的void
TypeScript中的void是undefined的子。JS中的函数总会有返回,要么是一个具体的值,要么是undefined.
function iHaveNoReturnValue(i) {
console.log(i)
} // returns undefined
在JS中,如果没有具体的返回值的函数会返回undefined,并且void总是会返回undefined,TS中的void是y一个合适的类型,告诉开发人员此函数返回undefined:
declare function iHaveNoReturnValue(i: number): void
void作为一个类型,也可以用在函数参数和其他的声明上。唯一可以传入的值是void:
declare function iTakeNoParameters(x: void): void
iTakeNoParameters() //
以上是关于第1741期JavaScript和TypeScript中的void的主要内容,如果未能解决你的问题,请参考以下文章
Domino 情报站 | 第1期 与 JavaScript 和 Node.js “组团开黑”