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

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

主站蜘蛛池模板: 都江堰市| 云和县| 双桥区| 新巴尔虎右旗| 文山县| 工布江达县| 青冈县| 惠安县| 米林县| 从江县| 西平县| 定远县| 长丰县| 禄丰县| 缙云县| 彭阳县| 成武县| 奇台县| 五河县| 洛川县| 启东市| 南澳县| 含山县| 盐津县| 获嘉县| 中西区| 巩义市| 宁化县| 赤壁市| 徐闻县| 芦山县| 拜城县| 宜兰市| 集安市| 德阳市| 青河县| 卢湾区| 辽宁省| 金坛市| 松溪县| 庆元县|