
tuple์javascript์์๋ ์ง์ํ์ง์๋ ํ์ ์ผ๋ก,typescript์์๋ ๋ฐฐ์ด ํ์ ์ ๋ณด๋ค ํน์ํ ํํ๋ก ์ฌ์ฉํ ์ ์๋tupleํ์ ์ ์ง์ํ๋ค. ๋ช ์์ ์ผ๋ก ์ง์ ๋ ํ์์ ๋ฐ๋ผ ์์ดํ ์์๋ฅผ ์ค์ ํ๊ณ , ์ถ๊ฐ๋๋ ์์ดํ ๋ํtuple์ ๋ช ์๋ ํ์ ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
let rule:[string,boolean]=['dog',true]
console.log(rule); // output : ["dog", true]
์์ ์์ #1์์ ์ฒซ ์๋ฃ๋ ๋ฌด์กฐ๊ฑด string์ด๊ณ ๋๋ฒ์งธ ์๋ฃ๋ ๋ฌด์กฐ๊ฑด boolean๋ง ํ์ฉํด์ฃผ๋ฉฐ ์ธ์ ๋ค๋ฅธ ํ์
์ด ๋ค์ด์ค๋ฉด ์๋ฌ๋ก ์ก์์ค๋ค.
-rest parameter: ๋งค๊ฐ๋ณ์ ์ด๋ฆ ์์ ์ธ ๊ฐ์ ์ ...์ ๋ถ์ฌ์ ์ ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ฏธํ๋ฉฐ ํจ์์ ์ ๋ฌ๋ ์ธ์๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ์ ๋ฌ๋ฐ๋๋ค.
let arr1 = [1,2,3]
let arr2 = [4,5]
let restArr=[...arr1,...arr2]
console.log(restArr)
function ํจ์(...x :string[]){
console.log(x)
}
typescript์์ ํจ์์ ์ํ ๋ ํ๋ผ๋ฏธํฐ ์ผ์ชฝ์ ์ 3๊ฐ๋ฅผ ๋ถ์ด๋ฉด ํ๋ผ๋ฏธํฐ๊ฐ ๋ช ๊ฐ๋ค์ด์ฌ์ง ๋ชจ๋ฅธ๋ค๋ ๋ป์ผ๋ก ์ฌ์ฉ๋๋ค.
function ํจ์(...x:[string,number]){
console.log(x)
}
ํจ์('kim',0318)
ํจ์('kim',03,18) // ์๋ฌ
ํจ์('kim','gyu','ri') // ์๋ฌ
rest parameter๋ฅผ ์๊ฒฉํ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ๋ค. ์ผ๋ฐ ํ๋ผ๋ฏธํฐ 2๊ฐ๋ฅผ ๋ฃ๋ ๊ฒ๊ณผ ๊ธฐ๋ฅ์ ๋ค๋ฅผ ๋ฐ ์์ง๋ง ์ฐจ์ด๋ rest parameter๋ฅผ ์ฐ๋ฉด ํ๋ผ๋ฏธํฐ๊ฐ ์ ๋ถ array์ ๋ด๊ฒจ์ ์จ๋ค.
type codeNum = [number,number?,number?];
let Num01:codeNum = [10];
let Num02:codeNum = [10,20];
let Num03:codeNum = [10,20,30];
let err:codeNum = [10,20,30,40]; // ์๋ฌ
โ ?์ต์
์ array ์ค๊ฐ์ ์ฌ์์๊ณ ์์ดํ
์ ๋ง์ง๋ง ํน์ ๋ง์ง๋ง๋ถํฐ ์ฌ์ฉํ ์ ์๋ค.
let arr01 = [1,2,3]
let arr02:[number,number,...number[]] = [10,20,...arr01]
// rest parameter๋ ์ ์ฌํ๊ฒ ํ์ฉ๊ฐ๋ฅ
let arr03 :[number, number, ...number[]] = [4,5,6,7,8,9,10]
let arr:[string,number,...boolean] = ['์๋ฉ๋ฆฌ์นด๋
ธ', 4000, true, false, true, true, false, true]
function ๋ถ๋ฅ๊ธฐ(...x:(number|string)[]){
let res:[string[],number[]]=[[],[]];
x.forEach(item=>{
if(typeof item==='string'){
res[0].push(item)
}else{
res[1].push(item)
}
})
return console.log(res)
}
๋ถ๋ฅ๊ธฐ('๊ท',3,'๋ฆฌ',18) // output : [['๊ท','๋ฆฌ'],[3,18]]