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

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.:

主站蜘蛛池模板: 勐海县| 龙井市| 兰坪| 万源市| 城步| 湖州市| 湖南省| 凤庆县| 安宁市| 成都市| 孝感市| 曲松县| 鱼台县| 大新县| 合水县| 广南县| 平原县| 文水县| 昭苏县| 华亭县| 沙洋县| 开鲁县| 德兴市| 缙云县| 岳普湖县| 交口县| 永昌县| 泸西县| 赣榆县| 青河县| 松江区| 尼玛县| 东光县| 安顺市| 乡宁县| 金门县| 界首市| 卫辉市| 新龙县| 华阴市| 吉林省|