๐Ÿ”ถ Array vs Tuple

Array

const strArr: string[] = ['apple', 'kiwi'];
const numArr: Array<number> = [1, 2, 3];
function printArr(arr: ***readonly*** string[]) {
	// arr.push ๊ฐ™์€ ๊ฒƒ๋“ค ๋ถˆ๊ฐ€๋Šฅ 
}

// readonly ์˜ต์…˜์„ ์ค„ ๋•Œ๋Š” Generic ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ 
function printArr(arr: ***readonly*** ~~Array<number>~~) {
}

Shadowed variable

function printArr(arr: ***readonly*** string[]) {
	arr[0] = 'papaya'; // Index signature in type 'readonly string[]' only permits reading.ts(2542)
}

function printArr(arr: ***readonly*** string[]) {
	arr = ['SHADOW']; // ์—๋Ÿฌ ์•ˆ ๋œธ
}

Tuple

type rgb = number | string;

const rgbColor1: [rgb, rgb, rgb] = [255, 0, 255];
const rgbColor2: [rgb, rgb, rgb] = ['FF', 'FF', '00'];
const person: [string, number] = ['Millie', 391];
person[0] // Millie
person[1] // 391

// destructuring
const [name, age] = person;