官术网_书友最值得收藏!

Spread expressions

TypeScript 3 allows us to use tuples with spread expressions.

Let's look at an example:

  1. Let's go back to the problematic pure JavaScript example we looked at for using the spread syntax:
function logScore(score1, score2, score3) {
console.log(score1 + ", " + score2 + ", " + score3);
}

const scores = [75, 65, 80];

logScore(...scores);

The TypeScript compiler raised the error Expected 3 arguments, but got 0 or more.

  1. Let's resolve this now with enhanced tuples in TypeScript 3. We'll start by adding types to the function parameters:
function logScore(score1: number, score2: number, score3: number) {
console.log(score1, score2, score3);
}

   There's nothing new yet, and we're still getting the compilation error.

  1. Let's change the scores variable into a fixed tuple:
 const scores: [number, number, number] = [75, 65, 80];

That's it – the compilation error has gone! All we needed to do was tell the compiler how many items were in scores for it to successfully spread into the logScore function.

So, in TypeScript 3, we can spread into fixed tuples. What about open-ended tuples? Let's give that a try:

const scoresUnlimited: [...number[]] = [75, 65, 80];

logScore(...scoresUnlimited);

Unfortunately, the compiler is not yet quite clever enough to let us do this. We get the compilation error Expected 3 arguments, but got 0 or more.:

主站蜘蛛池模板: 舟山市| 斗六市| 邹城市| 泊头市| 博罗县| 临澧县| 措勤县| 马尔康县| 娄底市| 河源市| 鸡西市| 贡山| 临潭县| 柏乡县| 环江| 白朗县| 永安市| 高邮市| 抚州市| 房山区| 鸡东县| 收藏| 成都市| 石河子市| 崇仁县| 翁源县| 闻喜县| 大田县| 新龙县| 宝坻区| 泰安市| 弥渡县| 彭泽县| 布尔津县| 正安县| 虞城县| 武乡县| 鲁山县| 本溪市| 齐齐哈尔市| 什邡市|