![[Typescript] ๋ฐฐ์ด(1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVA8Qi%2FbtsIV4qZzDc%2FWcsCcyXoaZVhqv7HxXQzgK%2Fimg.png)
๐์๋ก
JavaScript์์์ ๋ฐฐ์ด
JavaScript์์์ ๋ฐฐ์ด์ ์๋์ ์ํฉ์ฒ๋ผ ๋ฐฐ์ด ์์ ๋ค์ํ ํ์ ๋ค์ ํ์ฉํ๋ค.
const array = ["1",1,null,true];
array.push("hi",["hello"]);
// ["1",1,null,true,"hi",["hello"]]
ํ์ง๋ง ์ด๊ธฐ ์ ์ธ ๋ฐฐ์ด์ ํ์ ๊ฐ๋ค๊ณผ ๋ค๋ฅธ ๊ฐ์ ์ถ๊ฐํ๊ฒ ๋๋ฉด ๋ฐฐ์ด์ ์ฝ์ ๋ ํผ๋์ ์ค ์ ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์ ๊ฐ ๋ ๋งํ ์ํฉ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๐ซ์ฐ๋ฆฌ์ ์๊ฒฉํ TypeScript๋ ์ด ์ํฉ์ ํ์ฉํ์ง ์๋๋ค.
const array = ["1",1,null,true];
array.push("hi",["hello"]);
// error : Argument of type string[]->["hello"] is not assignable to parameter of type string | number | boolean | null
1๏ธโฃ ๋ฐฐ์ด ํ์
๋ฐฐ์ดํ์ ์ ์ ์ธ์ ์๋์ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
let numberArray : number[];
numberArray = [1,2,3,4,5,6,7,8,9,10];
1๏ธโฃ- 1. ๋ฐฐ์ด๊ณผ ํจ์ํ์
๊ดํธ๋ ์ ๋ํ ์ด์ ์ ์ด๋ ๋ถ๋ถ์ด ํจ์๋ฐํ ๋ถ๋ถ์ด๊ณ ์ด๋ ๋ถ๋ถ์ด ๋ฐฐ์ด ํ์ ๋ฌถ์์ธ์ง๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
/* Type : string ๋ฐฐ์ด์ ๋ฐํํ๋ ํจ์ */
let createStrings : () => string[];
/* Type : ๊ฐ๊ฐ์ string์ ๋ฐํํ๋ ํจ์ ๋ฐฐ์ด */
let stringCreators : ( ()=> string)[];
1๏ธโฃ- 2. ์ ๋์ธ ํ์ ๋ฐฐ์ด
/* Type : string ๋๋ (number ๋ฐฐ์ด) */
let stringOrNumberArray : string | number[];
/* Type : (string ๋๋ number) ๋ฐฐ์ด */
let arrayOfStringOrNumber : (string| number)[];
1๏ธโฃ- 3. any ๋ฐฐ์ด์ ์งํ
์ด๊ธฐ์ ๋น ๋ฐฐ์ด + ํ์ ์ ๋ํ ์ด์ ์ ์ธ์ ํ๋ฉด TypeScript๋ ๋ฐฐ์ด์ any [ ]๋ก ์ทจ๊ธํ๊ณ ๋ชจ๋ ํ์ ์ ๋ฐ์ ์ ์๋ค.
/* Type : any[] */
let values = [];
/* Type : string[] */
values.push("");
/* Type : (number | string)[] */
values[0] = 0;
์ด๋ ๊ฒ ํ์ ์ ๋ํ ์ด์ ์ ์์ฑํ์ง ์์ผ๋ฉด ๋ฐฐ์ด์ ๋์์ด JavaScript์ ํ์ฉ์ฒ๋ผ ๋ชจ๋ ๊ฒ์ ํ์ฉํ๋๋ฐ ์ด๋ฐ ์ํฉ์ ๊ฐ๊ธ์ ํผํ์.
โ TypeScript๋ ๊ฐ์ด ํ์ ์ ์ ๋ ๊ฐ์ฅ ์ ์๋ํ๋ค.
1๏ธโฃ- 4. ๋ค์ฐจ์ ๋ฐฐ์ด
2์ฐจ์ ๋ฐฐ์ด ๋๋ ๋ฐฐ์ด์ ๋ฐฐ์ด์ ๋ ๊ฐ์ [ ]๋ฅผ ๊ฐ๋๋ค.
์๋์ ๋ ์ฝ๋๋ ๋๊ฐ๋ค.
let secondDimensionArray1 : number[][];
let secondDimesionArray2 : (number[])[];
2๏ธโฃ ๋ฐฐ์ด ๋ฉค๋ฒ
TypeScript๋ ๋ฐฐ์ด์ ๋ฉค๋ฒ๋ฅผ ์ฐพ์์ ํด๋น ๋ฐฐ์ด์ ํ์ ์์๋ฅผ ๋๋๋ ค์ฃผ๋ ์ ํ์ ์ธ ์ธ๋ฑ์ค ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ดํดํ๋ ์ธ์ด์ด๋ค.
const players = ["Bellingham","KDB","Rodrigo"]
/*players ๋ฐฐ์ด์ string[] ํ์
*/
const player = players[0]
/*player์ string ํ์
*/
2๏ธโฃ- 1 . ์ฃผ์์ฌํญ : ๋ถ์์ ํ ๋ฉค๋ฒ
๋ง์ฝ ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์ฃผ์ด์ง๋ค๋ฉด ๋๋ ์ฒ์์ ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ์ ์ถํ ๊น?
function withElements(elements: string[]) {
console.log(elements[9001].length);
}
withElements(["Hello", "World"]);
//result : ???
๐ ๊ฒฐ๋ก ์ ์ผ๋ก๋ ๋น์ฐํ๊ฒ๋ 9001๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ ์์ผ๋ ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ฐํํ๋ค.
TypeError: Cannot read properties of undefined (reading 'length')
ํ์ง๋ง ์ด ์๋ฌ๋ JavaScript์ ๋ฐํ์ ์์ ์์ ๋ฐ์๋๋ ์ค๋ฅ์ด๋ค.
์ฆ, TypeScript๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ๋ํ ์ค์กด ๊ฐ์ด ์กด์ฌํ๋์ง ๊ฒ์ฌํ์ง ์๋๋ค.
โ ์์์ ๊ฐ์ด ์ค๋ช ํด๋ณด์๋ฉด
1. elements[9001]์ ์กด์ฌํ์ง ์๊ธฐ์ undefined๊ฐ ๋๋ค.
2. TypeScript๋ elements๋ฐฐ์ด์ด string[ ] ์์ ์๊ณ ์๊ธฐ์ elements[9001]์ ํ์ ์ string | undefined๋ก ์ถ๋ก ํ๋ค.
3. undefined.length๋ฅผ ์คํํ๋ฉด ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋๋ฐ ์ด๊ฑด TypeScript์ ํ์ ์ฒดํฌ ์์ ์ด ์๋ JavaScript์ ์คํ์์ ์์ ์๊ธฐ๋ ๋ฌธ์ ์ด๋ค.
4. ์ฆ, TypeScript๋ ์์ ๊ฐ์ ์ฝ๋์์ "ํ์ ์ค๋ฅ"๋ฅผ ์ก์๋ด์ง ๋ชปํ๋ค.
ํ์ ์คํฌ๋ฆฝํธ์๋ ๋ฐฐ์ด ์กฐํ๋ฅผ ๋ ์์ ํ๊ฒ ํด์ฃผ๋ noUncheckedIndexedAccess ํ๋๊ทธ๊ฐ ์์ง๋ง ๋งค์ฐ ์๊ฒฉํ ํ์ ์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋ค.
3๏ธโฃ์คํ๋ ๋์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์
. . . ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋๋จธ์ง ๋งค๊ฐ๋ณ์์ ๋ฐฐ์ด ์คํ๋ ๋๋ JavaScript์์ ๋ฐฐ์ด๊ณผ ์ํธ์์ฉํ๋ ํต์ฌ ๋ฐฉ๋ฒ์ด๋ค.
3๏ธโฃ- 1. ์คํ๋ ๋
๋ ๊ฐ ์ด์์ ๋ฐฐ์ด์ ๊ฒฐํฉํ๋ ๋ฒ : . . .์คํ๋ ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
/*Type : string []*/
const players = ["Bellingham","KDB","Rodrigo"];
/*Type : number[]*/
const ages = [21, 33, 28]
/*Type : (string | number)[]*/
const conjoined = [...players, ...ages]
ํ์
์์คํ
์ ์์ด์ ์
๋ ฅ๋ ๋ฐฐ์ด์ด ๋์ผํ ํ์
์ด๋ผ๋ฉด ์ถ๋ ฅ ๋ฐฐ์ด๋ ๋์ผํ ํ์
์ด๋ค.
ํ์
์ด ๋ค๋ฅธ ๋ ๋ฐฐ์ด์ ์คํ๋ ๋ํด ์ ๋ฐฐ์ด์ ์์ฑํ๋ฉด ๋๊ฐ์ ์๋ ํ์
์ค ์ด๋ ํ๋์ ์์์ธ ์ ๋์ธ ํ์
๋ฐฐ์ด๋ก ์ ์ถ๋๋ค.
3๏ธโฃ- 2. ๋๋จธ์ง ๋งค๊ฐ๋ณ์ ์คํ๋ ๋
TypeScript๋ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ก ๋ฐฐ์ด์ ์คํ๋ ๋ํ๋ JavaScript์ ์คํ์ ์ธ์ํ๊ณ ์ด์ ๋ํด ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ค.
๋ฐ๋ผ์, ํจ์์ ์ธ์๋ก ์ฌ์ฉ๋๋ ๋ฐฐ์ด์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์์ ๋์ผํ ํ์ ์ ์ง๋ ์ผ๋ง ํ๋ค.
function exampleFunction(arg1: number, ...args: string[]): void {
console.log(arg1);
console.log(args);
}
/* ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ซ์, ๋๋จธ์ง ์ธ์๋ค์ ๋ฌธ์์ด */
exampleFunction(1, 'a', 'b', 'c'); /* ์ ์ ๋์, ์ถ๋ ฅ: 1 ['a', 'b', 'c'] */
const numberArray: number[] = [2];
const stringArray: string[] = ['x', 'y', 'z'];
/* ๋ฐฐ์ด์ ์คํ๋ ๋ํ์ฌ ํจ์์ ์ธ์๋ก ์ ๋ฌ */
exampleFunction(...numberArray, ...stringArray); /* ์ ์ ๋์, ์ถ๋ ฅ: 2 ['x', 'y', 'z'] */
const invalidArray: (number | string)[] = [3, 'a', 4];
/* ํ์
๋ถ์ผ์น๋ก ์ธํด ์ค๋ฅ ๋ฐ์ */
exampleFunction(1000,...invalidArray); /* ์ค๋ฅ ๋ฐ์: 'number' ํ์
์ 'string' ํ์
์ ํ ๋น๋ ์ ์์ต๋๋ค.*/
'FrontEnd > Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Typescript] ์ธํฐํ์ด์ค(1) (0) | 2024.08.19 |
---|---|
[Typescript] ๋ฐฐ์ด(2) (0) | 2024.08.11 |
[Typescript] ํจ์(2) (0) | 2024.03.06 |
[Typescript] ํจ์(1) (1) | 2024.03.05 |
[Typescript] ๊ฐ์ฒด(2) (1) | 2024.02.10 |
์๋ ํ์ธ์? ๊ฐ๋ฐ์์ ๋๋ค.