1. ์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ฐฐ์ด
1-1. ๋ฐฐ์ด์ Object์ด๋ค.
const array = [1, 2, 3];
typeof array; // Object
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด์ ํ์
์ Object
์ด๋ค.
1-2. Object์ number ํ์ ์ผ๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์์ ๊ฐ์ฒด๋ ํค-๊ฐ
ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํค
๋ ๋ณดํต string(๋๋ ์ฌ๋ฒ) ํ์
๋ง ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ์๋์ ์์์ฒ๋ผ ๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ๋ฐฐ์ด์ ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
const array = [1, 2, 3];
array[0];
array[1];
array[2];
ํ์ง๋ง number ํ์ ์ ํค๋ก๋ ์ ๊ทผํ๋ ๊ฒ์ ์์ด ์ค๋ฅ๊ฐ ๋์ง ์๋ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ์๋์ผ๋ก string ํ์ ์ผ๋ก ํ๋ณํ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
2. ์ผ๊ด์ฑ์ ์ง๋ ํ์ ์คํฌ๋ฆฝํธ
์ฐ๋ฆฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฒ์ฉ์ ์ผ๋ก number ํ์ ์ ํค๋ฅผ ํตํด ๋ฐฐ์ด์ ๊ฐ์ ์ ๊ทผ์ ํ์๊ธฐ ๋๋ฌธ์ ํ์ ์คํฌ๋ฆฝํธ์์๋ ์ผ๊ด์ฑ์ ์ํด number ํ์ ์ ํค๋ฅผ ํ์ฉํ๋ค.
Array
์ ๋ํ ํ์
์ ์ธ์ ๊ฐ์ฅ ์๋์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ํ์ธํ ์ ์๋ค.
interface Array<T> {
// ...
[n: number]: T;
}
๋ค์ ๋งํด, ์ค์ Object
์์๋ ๋ฌธ์์ด(ํน์ ์ฌ๋ฒ) ํ์
์ผ๋ก๋ง ๊ฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ [n: string]: T
๊ฐ ์ฌ๋ฐ๋ฅธ ํํ์ด์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ผ๊ด์ฑ์ ์ํด ํค ํ์
์ number
๋ก ์ ํ ๊ฒ์ด๋ค.
3. number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ ์ดํด๋ณด๊ธฐ
๊ฐ๋จํ number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๋ฅผ ์ดํด๋ณด์.
type Animals = { [n: number]: string };
const animals: Animals = {
0: 'cat',
1: 'dog',
};
์ Animals ํ์
์ ํค๋ numberํ์
์ด๊ณ
๊ฐ์ string
ํ์
์ด๋ค. ๋๋ฌธ์ animals ๊ฐ์ฒด๋ ์๋์ ๊ฐ์ด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
animals[0];
animals[1];
4. number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ ๋์ Array ๋๋ ํํ ํ์ ์ฌ์ฉํ๊ธฐ
๊ตณ์ด number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ํค ํ์
์ด number
์ธ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์๊ฐ ์์๊น? ์ด๋ฏธ ์๋ ํ์
์ธ Array
ํ์
์ ์ฌ์ฉํ์ฌ number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๋ฅผ ๋์ ํ ์ ์์๊น? ์ ๋ต์ ํ ์ ์๋ค.
4-1. Array ํ์ ์ฌ์ฉ
const animals: Array<string> = ['cat', 'dog', 'tiger'];
๊ฐ์ด []
์ ์ํด์๋, {}
์ ์ํด์๋๋ ๋ค๋ฅด๋ค. ํ์ง๋ง ์ ๊ทผํ๋ ๊ด์ ์ ๋ณธ๋ค๋ฉด ์ด ๋์ ๊ฐ๋ค. ์ฆ, ๋ค์๊ณผ ๊ฐ์ด ์ ๊ทผํ ์ ์๋ค.
animals[0];
animals[1];
animals[2];
4-2. ํํ ํ์ ์ฌ์ฉ
๋๋ ๊ฐ์ ๊ฐ์๊ฐ ์ ํด์ ธ ์๋ค๋ฉด ํํ
ํ์
๋ ์ฌ์ฉํ ์ ์๋ค.
const foods: [string, string] = ['pizza', 'noodle'];
foods[0];
foods[1];
4-3. ๊ฒฐ๋ก
number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๊ฐ ํ์ํ๋ค๋ฉด Array
, ํํ
ํ์
์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ด๋ฏธ ํ์
์คํฌ๋ฆฝํธ์ ์๋ ํ์
์ ํ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋ ์ ํ์ฉํ๋ ๊ฒ์ด์ง ์์๊น ์ถ๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ ์ฌ์ ํ ์กด์ฌํ๋ค.
Array
, ํํ
ํ์
์ ๋ชจ๋ ๋ฐฐ์ด์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๊ฐ ๋ชจ๋ ์กด์ฌํ๋ค. ํ์ง๋ง ์ฐ๋ฆฐ ๊ฐ์ ์ ๊ทผ
๋ง ํ๊ณ ์ถ์ ๋ฟ์ด๋ค. ๋๋ ๊ธธ์ด ์ ๋๋ง...?
์ด๋ฐ ๋ฌธ์ ๋ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น?
5. number ์ธ๋ฑ์ค ์๊ทธ๋์ฒ ๋์ ArrayLike ํ์ ์ฌ์ฉํ๊ธฐ
์ ๋ฌธ์ ๋ ArrayLike
ํ์
์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค. ArrayLike
ํ์
์ ํํ๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
interface ArrayLike<T> {
readonly length: number;
readonly [n: number]: T;
}
length
ํ๋กํผํฐ์ ํค-๊ฐ
๋ง ์กด์ฌํ๋ค. ArrayLike
ํ์
์ ์ฌ์ฉํด๋ณด๋๋ก ํ์.
const animals: ArrayLike<string> = ['cat', 'dog', 'tiger'];
animals[0]; // cat
animals[1]; // dog
animals.length; // 3
๋ฐฐ์ด์ ํํ๋ก ๊ฐ์ ๋ฃ์ ์ ์๊ณ ๊ฐ์ฒด์ ํํ๋ก ๊ฐ์ ๋ฃ์ ์ ์๋ค.
์ฐธ๊ณ ๋ก
Array
ํ์ ๋ ๊ฐ์ฒด๋ก ๊ฐ์ ๋ฃ์ ์ ์์ง๋ง ๋ชจ๋ ๋ฉ์๋์ ๊ฐ์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น๋ค. ๊ท์ฐฎ๋ค.
const animals: ArrayLike<string> = {
0: 'cat',
1: 'dog',
2: 'tiger',
length: 3,
};
๊ฐ์ฒด์ ํํ๋ก ๊ฐ์ ๋ฃ์ ๋ length
์์ฑ๋ ํจ๊ป ๋ฃ์ด์ค์ผ ํ๋ค.
6. ๊ทธ๋ ๋ค๋ฉด ์ธ์ ?
์ง๊ธ๊น์ง ์ดํด๋ณธ ๋ด์ฉ์ ์ธ์ ์ ์ฉํ๋ฉด ์ข์์ง ์๊ฐํ๋ฉด ์๋์ ๊ฐ๋ค.
- ์ ๋ง ์ธ๋ฑ์ค ์๊ทธ๋์ฒ๊ฐ ํ์ํ ์ํฉ์ธ๊ฐ? - Item 15๋ฅผ ์ฐธ๊ณ
- ํค ํ์
์ด
number
์ด์ด์ผ ํ๋๊ฐ? - ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ์๋ก์ด ํ์
์ ๋ง๋ค์ง ๋ง๊ณ
Array
,ํํ
,ArrayLike
ํ์ ์ ์ฌ์ฉํ์.
๊ฒฐ๋ก ! ์ฌ๋งํ๋ฉด ์ฌ์ฉํ ์ผ์ด ์์ ๋ฏ!