๐ ์ต๊ทผ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ตํ๊ณ ์๋ค.
๊ณผ๊ฑฐ ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ํ์ ๋๋ฌธ์ ๊ณ ์ํ๋ ์ ์ด ์์ด์ ํ์ ์ ์ง์ ํด์ค๋ค๋ ๊ฒ๋ง์ผ๋ก๋ ๊ต์ฅํ ๋งค๋ ฅ์ ๋๋ผ๊ณ ์๊ณ ๊ฐ์ธ์ ์ผ๋ก JS๋ณด๋ค ์ฌ๋ฏธ์๋ค. ๋ฌผ๋ก ์ฒ์ ๋ฐฐ์ฐ๋ ๊ฑฐ๋ผ ๊ทธ๋ด ์๋ ์์ง๋ง typescript๋ฅผ ์ฌ๋ฐ๋ค๊ณ ๋๋ผ๋๊ฒ ์ค์ํ์ง ์์๊น?! ํ๋์ฉ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
์ ์ผ ์ค์ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ ์ฐ๋๊ฐ?
1. ์ ์ ํ์
์ง์์ผ๋ก ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ํ์ธ ํ ์ ์๋ค.
2. IDE์ ๊ฐ์ ๋๊ตฌ์ ์ง์์ ๋ฐ์ ์ ์๋ค.
3. interface, generic์ ํตํด OOP ์ง์์ ๋ฐ์ ์ ์๋ค.
4. ESNext๋ฅผ ์ง์ํ๋ค.
๋จผ์ ๊ธฐ๋ณธํ์ ๋ง ํ์ธํด๋ณด์.
let animal: string = 'dog';
let ten: number = 10;
let fruit: Array<string> = ['banana', 'apple'];
let fruit: string[] = ['banana', 'apple'];
let address: [string, number] = ['seoul', 20]
let person: {name: string, age:number} = {
name: 'winney',
age: 10,
};
let open: boolean = true;
์ถ๊ฐ์ ์ธ ํ์ ์ ๋์ค์ ์์ฑํ ์์ !
let sum = (a: number, b: number) : number => {
return a + b;
}
๋ฐ๋์ ์ธ์๊ฐ 2๊ฐ ์์ด์ผํ๋ค.
let sum = (a: number, b?: number) : number => {
return a + b;
}
์ธ์ ๋ค์ ?๋ฅผ ๋ถ์ฌ์ ์ธ์๊ฐ ์์ด๋ ์๋ฌ๊ฐ ๋์ง ์๊ฒ ํ ์ ์๋ค.
โ optional parameter๋ ๋ฐ๋์ ๋ค์ ์์นํด ์์ด์ผ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ts์์ ์ธ์ํ์ง ๋ชป ํ๋ค.
let sum = (a?: number, b: number) : number => {
return a + b;
}
interface Person {
name: string;
age: number;
}
let winney: Person = {
name: 'winney',
age: 10,
}
let printUser = (user: Person) => {
console.log(user)
}
interface ์ฌ์ฉ์ผ๋ก ๋ค์ํ ๊ณณ์ ๊ฐ์ฒด์ ํ์ ์ ํธํ๊ฒ ์ง์ ํ ์ ์๋ค.
interface Developer extends Person {
skill: string
}
let winney: Developer = {
name: 'winney',
age: 10,
skill: 'ts'
}
์ถ๊ฐ๋ก ํ์ ๋ณ์นญ์ด๋ผ๋ ๋ถ๋ถ์ด ์๋ค.
type Person = {
name: string;
age: number;
}
ํํ๋ interface์ ๋น์ทํ๋ค.
ํ์ง๋ง interface์ ๋ฌ๋ฆฌ ํ์ฅ์ด ๋์ง ์๊ณ preview๊ฐ interface์๋ ๋ค๋ฅด๊ฒ ๋ณด์ธ๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ interface๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด๋ค ๊ฑธ ์ฌ์ฉํ๋ ์ผ๊ด์ ์ผ๋ก ์ฌ์ฉํ๋๋ก ํด์ผํ๋ค.
์ถ์ฒ