- Learn React with TypeScript 3
- Carl Rippon
- 361字
- 2021-06-10 19:16:41
JavaScript rest and spread syntax
In JavaScript, a rest parameter collects multiple arguments and condenses them into a single argument. It is called rest because it collects the rest of the arguments into a single argument.
This syntax was introduced in ES6 and allows us to nicely implement functions that have an indefinite number of parameters.
We define a rest parameter with three dots preceding the parameter name.
Let's go through a quick example:
- Let's create a logScores function that takes in a scores rest parameter that just outputs the parameter to the console:
function logScores(...scores) {
console.log(scores);
}
- We can call logScores as follows:
logScores(50, 85, 75);
If we run this, we'll get an array of the three elements we passed in as parameters output to the console. So, our scores parameter has collected all the arguments into an array.
The spread syntax is the opposite of rest parameters. It allows an iterable, such as array, to be expanded into function arguments.
Let's look at an example:
- Let's redefine our logScore function with specific parameters:
function logScore(score1, score2, score3) {
console.log(score1, score2, score3);
}
Note that this is still pure JavaScript – no types just yet!
- Let's define a scores array:
const scores = [75, 65, 80];
- Finally, let's use the spread syntax to pass our scores variable into our logScore function:
logScore(...scores);
If you are using the TypeScript playground, you'll get the compilation error, expected 3 arguments, but got 0 or more. The program still runs though, because this is perfectly valid JavaScript. 75, 65, 80 will be output to the console if we do run it.
In the following sections, we'll see how the new features in TypeScript 3 help us help the compiler to better understand what we are trying to do when using rest and spread. This will allow us to resolve the compilation errors seen in the preceding example.
- Oracle WebLogic Server 12c:First Look
- Spring 5.0 By Example
- FreeSWITCH 1.8
- Python爬蟲開發:從入門到實戰(微課版)
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- Interactive Applications Using Matplotlib
- 深入淺出Go語言編程
- C++語言程序設計
- C++ Application Development with Code:Blocks
- Qlik Sense? Cookbook
- 零基礎學HTML+CSS第2版
- MyBatis 3源碼深度解析
- 實戰Python網絡爬蟲
- 計算機常用算法與程序設計教程(第2版)
- 邊做邊學深度強化學習:PyTorch程序設計實踐