狗万官网酒店 > 狗万官网下载 > JavaScript和TypeScript中的void的现实性行使_javascript艺术

JavaScript和TypeScript中的void的现实性行使_javascript艺术

来源: 2019-09-16 09:50 我来投稿 参与评论
这篇文章主要介绍了JavaScript和TypeScript中的void的现实性行使,文中通过示范代码介绍的独特详细,对大家的上学或者工作具有原则性的参考学习价值,要求的朋友们下面随着小编来累计学习学习吧

如果你来自传统的强类型语言,可能会很熟悉 void 的定义:一种类型,报告你函数和艺术在调用时不回来任何内容。

void 表现运算符存在于 JavaScript 外方,而表现主导类型存在于 TypeScript 外方。在这两个世界中,void 的上班机制与大部分口习惯的有点不同。

JavaScript 中的 void

JavaScript 中的 void 是一番运算符,用于计算它旁边的内涵式。无论是评估哪个表达式,void总是返回undefined。

let i = void 2; // i === undefined

咱为什么需要这样的东西?最先在最初,人人能够覆盖 undefined 并送她一个具体值。 void 总是返回 real undefined。

从,这是一种备用立即调用函数的好方式:

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 最重要的康庄大道:其它是你程序的安全门。顶你的函数总是应该返回 undefined 时,你可以确保始终如此。

button.onclick = () => void doSomething();

TypeScript 中的 void

TypeScript 中的 void 是 undefined 的子类型。 JavaScript 中的函数总是返回一些东西。要么它是一番值,要么是 undefined:

function iHaveNoReturnValue(i) {
 console.log(i)
} // returns undefined

因为没有返回值的函数总是返回 undefined,而 void 总是在 JavaScript 外方返回 undefined,TypeScript 中的void 是一番正确的种类,报告开发人员这个函数返回 undefined:

declare function iHaveNoReturnValue(i: number): void

void 表现项目也得以用于参数和整个其他声明。唯一可以传递的值是 undefined:

declare function iTakeNoParameters(x: void): void

iTakeNoParameters() // 👍
iTakeNoParameters(undefined) // 👍
iTakeNoParameters(void 2) // 👍

故而 void 和 undefined 几乎是一样的。虽然有一点点不同,但这种差别很大:表现返回类型的 void 可以用不同之种类替换,以允许高级回调模式:

function doSomething(callback: () => void) {
 let c = callback() // at this position, callback always returns undefined
 //c is also of type undefiend
}

// this function returns a number
function aNumberCallback(): number {
 return 2;
}

// works 👍 type safety is ensured in doSometing
doSomething(aNumberCallback) 

这是希望的一言一行,一般用于 JavaScript 先后。你可以在我之任何文章中阅读更多关于这种被称为 substitutability 的货仓式。

如果你想确保传递只回去 undefined 的函数(如“nothing”),请确保调整你的回调方法签名:

- function doSomething(callback: () => void) {
+ function doSomething(callback: () => undefined) { /* ... */ }

function aNumberCallback(): number { return 2; }

// 💥 types don't match
doSomething(aNumberCallback) 

简言之大部分时间你都能和 void 很好的相处。

上述就是本文的方方面面内容,瞩望对大家的上学有所帮助,也愿意大家多多支持脚本的师。

义务编辑:狗万官网酒店
 
 
0% (0)
 
 
0% (0)
机长评论( ) 请自觉遵守互联网相关的富民政策法规,不准发布色情、暴力、反动的议论。
地名: 匿名?