Section4 Unit5 [TypeScript] ๊ธฐ์ด - ํ์ ์คํฌ๋ฆฝํธ ์์
๐ Chapter1. TypeScript
• TypeScript๋ JavaScript์ ์ ์ ํ์ ๊ฒ์ฌ์ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ๊ฐ๋ฐ๋ ์ธ์ด๋ก, JavaScript๊ฐ ๋ฐ์ ํ๋ฉด์ ์๊ธด ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ๊ฒ ๋์๋ค.
ํ์ ์คํฌ๋ฆฝํธ ํ์ต์ ์ํ VSCode ํ๊ฒฝ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ๊ธฐ๋กํด๋์๋ค :)
๐ Chapter2. TypeScript์ ํ์
// string
let name: string = "Lilly";
// number
let age: number = 29;
// boolean
let isAdult: boolean = true;
// array 1. []
let numberList: number[] = [1, 2, 3];
let week: string[] = ['mon', 'tue', 'wed'];
// array 2. ์ ๋ค๋ฆญ ๋ฐฐ์ด ํ์
let numberList: Array<number> = [1, 2, 3];
let week: Array<string> = ['mon', 'tue', 'wed'];
TypeScript์ ํ์ ๊ณผ ํจ์ ๋ฑ ํ์ตํ ๋ด์ฉ์ด ๋๋ฌด ๋ฐฉ๋ํด์ ๋ฐ๋ก ์ ๋ฆฌ๋ฅผ ํด์ผํ ๊ฒ ๊ฐ๋ค.
๊ฐ๋จํ๊ฒ ๊ธฐ๋กํ๊ธฐ์ ๊ณต๋ถํ ๊ฒ ๋๋ฌด ๋ง์ ํ์ ์คํฌ๋ฆฝํธ...
๐ Chapter3. TypeScript์ ํจ์
• JavaScript์์์ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ช ํจ์(named function)์ ํ์ดํ ํจ์(arrow funciton) ๋ฑ์ผ๋ก ๋ง๋ค ์ ์๋ค.
// naemd function
function add(x: number, y: number):number {
return x + y
}
// arrow function
let add = (x: number, y: number):number => {
return x + y;
}
๐ Chapter4. TypeScript์ ์ฐ์ฐ์ ํ์ฉ ํ์
• TypeScript๋ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ํ์ ์ ์ ํ ์ ์๋ค. JavaScript์์๋ ๋ณด์๋ ||(OR) ์ฐ์ฐ์๋ && (AND)์ ๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ค. | ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ํ์ ์ ์ ๋์จ(Union) ํ์ ์ด๋ผ๊ณ ํ๋ฉฐ, & ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ํ์ ์ ์ธํฐ์น์ (Intersection) ํ์ ์ด๋ผ๊ณ ํ๋ค.
// Union Types
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer | Person) {
console.log(someone.name);
}
Union ํ์ ์ ์ฌ๋ฌ ํ์ ์ค ํ๋๊ฐ ๋ ์ ์๋ ๊ฐ์ผ๋ก ์ธ๋ก ๋ง๋( | )๋ก ๊ฐ ํ์ ์ ๊ตฌ๋ถํ๋ค.
์ ๋์จ ํ์ ์ธ ๊ฐ์ด ์์ผ๋ฉด, ์ ๋์จ์ ์๋ ๋ชจ๋ ํ์ ์ ๊ณตํต์ธ ๋ฉค๋ฒ๋ค์๋ง ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ํด์ผ ํ๋ค.
์ค์ง์ ์ผ๋ก askSomenone ํจ์ ๋ด๋ถ์์๋ Developer์ Person์ด ๊ฐ๊ณ ์๋ ๊ณตํต ํ๋กํผํฐ์ธ name์๋ง ์ ๊ทผํ ์ ์๋ค. ์๋ํ๋ฉด ๊ณตํต๋๊ณ ๋ณด์ฅ๋ ํ๋กํผํฐ๋ง ์ ๊ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฝ ๋๋จธ์ง ํ๋กํผํฐ์๋ ์ ๊ทผํ๊ณ ์ถ๋ค๋ฉด ํ์ ๊ฐ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
// Intersection Types
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer & Person) {
console.log(someone.age);
console.log(someone.name);
console.log(someone.skill);
}
Intersection ํ์ ์ ๋ ์ด์์ ํ์ ์ ๊ฒฐํฉํ์ฌ ์๋ก์ด ํ์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ผ๋ก & ๋ก ํ๊ธฐํ๋ค. ๊ธฐ์กด ํ์ ์ ํฉ์ณ ํ์ํ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ฐ์ง ๋จ์ผ ํ์ ์ ์ป์ ์ ์๋ค.
์์ ์ฝ๋๋ ์ธํฐ์น์ ํ์ ์ ์ฌ์ฉํ์ฌ Developer์ Person์ ํ๋์ ํ์ ์ผ๋ก ๋ฌถ์๋ค. ๋ฐ๋ผ์ askSomeone ํจ์ ๋ด์์ ์ ์๋ ํ๋กํผํฐ์ ์ ๋ถ ์ ๊ทผํ ์ ์๋ค.
์ ๋์จ ํ์ ๊ณผ ์ธํฐ์น์ (๊ต์ฐจ) ํ์ ์ ๋ํด ์กฐ๊ธ ๋ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํด์ ๊ธ์ ์ฌ๋ ธ๋ค. ์ ๋์จ/๊ต์ฐจ ํ์ ๋ฟ๋ง ์๋๋ผ ๋ฆฌํฐ๋ด ํ์ ๋ ํจ๊ป ๋ค๋ฃจ์๋ค ๐
๐ ์ค๋์ ํ๊ณ
ํ์ ์คํฌ๋ฆฝํธ ์ ๋์ ๋ค์ด์๋ค. ์ด์ ์๋ ๋ง๋งํ๊ฒ๋ง ๋๊ปด์ก๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ ํ ๋ฒ ๋ง๋๊ฒ ๋๋, ์ด์ฌํ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ค๋๋ง์ ์ด๋ก ๋ง ๋ณด๋๊น ์กฐ๊ธ ์ง๊ฒน๊ณ , ์ ์ดํดํ๊ณ ์๋์ง ์๋ฌธ์ด ๋ค์์ง๋ง ๊ทธ๋๋ ์ค๋์ ๋๋ฆ ์ฌ๋ฏธ์๊ฒ ๊ณต๋ถ๋ฅผ ํ๋ ๊ฒ ๊ฐ๋ค. ๐
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ด์ ์๋ ์ปค๋ฆฌํ๋ผ์ ์์๋๋ฐ, ์ด๋ฒ ๊ธฐ์๋ถํฐ ์๊ฒผ๋ค๊ณ ๋ค์๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ผญ ๋ฐฐ์ฐ๊ณ ์ถ์๋ ๋๋ก์จ๋ ๋๋ฌด ์๋ ์ผ์ด์์ง๋ง, ์ปค๋ฆฌํ๋ผ์ 3์ผ์ด๋ผ๋ ์งง์ ์๊ฐ๋ฐ์ ์์ด์ ์๋ง ๊ณผ์ ๋ด์์ ๋ง์ ๊ฑธ ํ์ง๋ ๋ชปํ ๊ฒ ๊ฐ๊ณ , ๋ฐ๋ก ๋ ๊ณต๋ถ๋ฅผ ํด์ผํ ๊ฒ ๊ฐ๋ค. ๋จ์ ์ด๋ฒ ์ฃผ๋ ํ์ดํ ๐ฅ
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section4 Unit7 [Deploy] CI/CD - Github Actions ์ค์ต (0) | 2023.08.01 |
---|---|
Section4 Unit6 [Deploy] Amazon Web Service (0) | 2023.07.31 |
Section4 Unit4 [UX/UI] Design System - ๋์์ธ ์์คํ ๊ตฌ์ถํ๊ธฐ (0) | 2023.07.25 |
Section4 Unit4 [UX/UI] Design System (0) | 2023.07.21 |
Section4 Unit3 [React] ์ฌํ - React Hooks ์ ์ฉํ๊ธฐ (0) | 2023.07.20 |