日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TypeScript 使用三个点号表示的 Rest 参数语法和 spread syntax

發(fā)布時(shí)間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TypeScript 使用三个点号表示的 Rest 参数语法和 spread syntax 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

官方鏈接

除了使用可選參數(shù)或重載來創(chuàng)建可以接受各種固定參數(shù)計(jì)數(shù)的函數(shù)之外,我們還可以使用剩余參數(shù)定義具有無限數(shù)量參數(shù)的函數(shù)。rest 參數(shù)出現(xiàn)在所有其他參數(shù)之后,并使用 … 語法:

看個(gè)例子:

function multiply(n: number, ...m: number[]) {return m.map((x) => n * x); }function multiplyArray(n: number, m: number[]) {return m.map((x) => n * x); }const a = multiply(10, 1, 2, 3, 4); console.log(a);const b = multiply(10, [1,2,3,4]); console.log(b);const c = multiplyArray(10, [1,2,3,4]); console.log(c);

如果需求是允許傳入多個(gè)數(shù)組,該怎么寫?

type JerryArray = number[];function multiply(n: number, ...m: JerryArray[]) {return m.map( (stillArray) => stillArray.map((x) => n * x )); }const b = multiply(10, [1,2,3,4], [5,6,7,8]); console.log(b);

注意:rest parameter 的類型,必須為數(shù)組類型。

在 TypeScript 中,這些參數(shù)上的類型注解是隱式的 any[] 而不是 any,并且給出的任何類型注解都必須是 Array<T> 或 T[] 的形式,或者是元組類型。

如果把三個(gè)點(diǎn)去掉,語法錯(cuò)誤,因?yàn)閿?shù)組的 push 方法,輸入?yún)?shù)不能是數(shù)組:

而應(yīng)該是 number 的序列:

把 push 的輸入?yún)?shù)從數(shù)組,改成 4,5,6,7這種 number 序列就能夠正常工作了:

spread 操作符的結(jié)果不能直接賦給一個(gè)變量,必須用數(shù)組包一層。

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結(jié)

以上是生活随笔為你收集整理的TypeScript 使用三个点号表示的 Rest 参数语法和 spread syntax的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。