2012๋ ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๋ฐํํ ์๋ฐ์คํฌ๋ฆฝํธ(Javascript)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ์ ๋ฌธ๋ฒ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
1. ์ปดํ์ผ ์ธ์ด, ์ ์ ํ์
์ธ์ด
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์
์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ก ๋ฐํ์์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค. ์ด์ ๋ฐํด ํ์
์คํฌ๋ฆฝํธ๋ ์ ์ ํ์
์ ์ปดํ์ผ ์ธ์ด์ด๋ฉฐ, ํ์
์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ ๋๋ ๋ฐ๋ฒจ(Babel)์ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํ๋๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ ์ํผ์
(Superset)
ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์
, ์ฆ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ํ์
์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ ์ถ๊ฐํ ์ธ์ด์ด๋ค. ๋ฐ๋ผ์ ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ฝ๋๋ ํ์ฅ์๋ฅผ .js์์ .ts๋ก ๋ณ๊ฒฝํ๊ณ ํ์
์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผํ์ฌ ๋ณํํ ์ ์๋ค.
3. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ง์
ํ์
์คํฌ๋ฆฝํธ๋ ES6(ECMAScript6)์์ ์๋กญ๊ฒ ์ฌ์ฉ๋ ๋ฌธ๋ฒ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ ํด๋์ค, ์ธํฐํ์ด์ค, ์์, ๋ชจ๋ ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ์ ๊ณตํ๋ค.
1. ๋์ ์์ค์ ์ฝ๋ ํ์๊ณผ ๋๋ฒ๊น
ํ์
์คํฌ๋ฆฝํธ๋ ์ฝ๋์ ๋ชฉ์ ์ ๋ช
์ํ๊ณ ๋ชฉ์ ์ ๋ง์ง ์๋ ํ์
์ ๋ณ์๋ ํจ์๋ค์์ ์๋ฌ๋ฅผ ๋ฐ์์์ผ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ์ ๊ฑฐํ๋ค.
๋ํ ์ฝ๋ ์๋์์ฑ์ด๋ ์คํ ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ์์
๊ณผ ๋์์ ๋๋ฒ๊น
์ด ๊ฐ๋ฅํด ์์ฐ์ฑ์ ๋์ผ ์ ์๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ
ํ์
์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ 100% ํธํ๋๋ค. ํ๋ก ํธ์๋ & ๋ฐฑ์๋ ์ด๋๋ ์ฑ๊ณผ ์น๋ฅผ ๊ตฌํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ผํ ์ฉ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์๋ฒ ๋จ์์ ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง๋ ๋ณต์กํ ๋ํ ํ๋ก์ ํธ์์๋ ๋น์ ๋ฐํ๋ค.
3. ๊ฐ๋ ฅํ ์ํ๊ณ
ํ์
์คํฌ๋ฆฝํธ๋ ๊ทธ๋ฆฌ ์ค๋๋์ง ์์ ์ธ์ด์์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ๋ ฅํ ์ํ๊ณ๋ฅผ ๊ฐ๊ณ ์๋ค. ๋๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋ฉฐ, ๋ง์ดํฌ๋ก์ํํธ์ VSCode๋ฅผ ๋น๋กฏํด ๊ฐ์ข
์๋ํฐ๊ฐ ํ์
์คํฌ๋ฆฝํธ ๊ด๋ จ ๊ธฐ๋ฅ๊ณผ ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ค.
4. ์ ์ง์ ์ ํ ๊ฐ๋ฅ
๊ธฐ์กด์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ํ์
์คํฌ๋ฆฝํธ๋ก ์ ํํ๋๋ฐ ๋ถ๋ด์ด ์๋ค๋ฉด ์ถ๊ฐ ๊ธฐ๋ฅ์ด๋ ํน์ ๊ธฐ๋ฅ์๋ง ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋์
ํจ์ผ๋ก์จ ํ๋ก์ ํธ๋ฅผ ์ ์ง์ ์ผ๋ก ์ ํํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์์ ๋ถํฐ ์์ํ์ฌ ์๊ฐ์ด ์ง๋๋ฉฐ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์์ ํ ๋ฐ๋๋๋ก ์ค๋น๋ฅผ ํ ์ ์๋ค.
1. ํ์ง๋ง ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๋ฌ๋ ์ปค๋ธ(Learning Curve)
2. ์๋์ ์ผ๋ก ๋ฎ์ ๊ฐ๋
์ฑ
3. ์ฝ๋๋ ์ฆ๊ฐ
ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ฉด ๋๋ค.
ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ ์๋ก, ์ ์ง๋ณด์๊ฐ ์ค์ํ ์ฅ๊ธฐ ํ๋ก์ ํธ์ผ์๋ก ํ์
์คํฌ๋ฆฝํธ์ ์ด์ ์ด ๋ถ๊ฐ๋ ๊ฒ์ด๋ค.
//๋ณ์์ ํ์
์ค์
let str: string = 'hi';
let num: number = 100;
let arr: Array = [1, 2, 3];
let arr2: number[] = [1, 2, 3];
let obj: object = {};
let obj2: { name: string, age: number} = {
โname: 'hoho',
โage: 22
};
//ํจ์์ ํ์
์ค์
function add(a: number, b: number): number {
return a+b;
}
//์ต์
๋ ํ๋ผ๋ฏธํฐ
function log(a: string, b?: string, c?: string) {
โconsole.log(a);
}
์ด ์ด๊ฑฐ ์ ๋ฒ์ ๋ด๊ฐ ํ์๋๋
function add({a, b}:number){
return a+b;
}
์ด๋ ๊ฒ ์ํ๋๊น ์ค๋ฅ๋๋๋ฐ ใ ใ ์ด ์ฐจ์ด๋ ๋ญ์ง?? -> props ์ด์ฉ๊ตฌ ํ๋ ํจํค์ง๋ฅผ ์ฐ๋ฉด ์ด๋ ๊ฒ ์ฐ๋ ๊ฑด๊ฐ..?
:number[ ] or Array<number>์ธํฐํ์ด์ค๋ ํ์
์ ์ ์ํ ๊ท์น์ ์๋ฏธํ๋ค.
interface ๋ผ๋ ํค์๋๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋งค๊ฐ๋ณ์ ํ์
์ผ๋ก ์ ๋ฌํ๋ค. ํจ์ ์ ์ธ์์ ๋งค๊ฐ๋ณ์๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ธ์์ ํ์
๋ ๋์ผํ๊ฒ ์ง์ผ์ค๋ค.
ํ์ฌ์์๋ Props ๋ผ๋ ๋ณ์? ๋ช
๋ น์ด?๋ก ์ฌ์ฉํ๋๋ฐ ํจํค์ง์ธ์ค! ์๋๋ฉด ํจํค์ง์ค์ ํ๋์ธ๊ฑด๊ฐ? ์ข ๋ ์์๋ณด์
// interface๋ฅผ ํตํ ๊ฐ ๋งค๊ฐ๋ณ์ ๋ณ type์ง์
interface Person {
name : string;
age : number;
}
// ์ธ์๋ก ๋๊ธธ object
const user = {
name : '๋ฐ๋น',
age :99,
}
// sayHi ํจ์ ์ ์, ๋งค๊ฐ๋ณ์์ type์ ์ง์ ํ๋ค.
// ๋ง์ฝ ๋งค๊ฐ๋ณ์๊ฐ ๊ฐ๋ณ ๋ณ์๋ผ๋ฉด
// (name : Person.name, age:Person.age):string
const sayHi = (user :Person): string => {
return `๋๋ ${person.age}์ด ${pserson.name}๋ค~`
}
console.log(sayHi(user));
// '๋๋ 99์ด ๋ฐ๋น๋ค~'
// Person ํด๋์ค ์ ์ธ
class Person {
// fullName์ type ์ ์ธ
fullName : string;
constructor (firstName : string, lastName : string) {
this.fullName = `${firstName} ${lastName}`;
}
}
// Person ์์ฑ์๋ก man ์์ฑ
const man = new Person('์ฌ๊ณผ', '๋ฐ๋๋');
console.log(man.fullName) // fullname = ์ฌ๊ณผ ๋ฐ๋๋
ํด๋์ค ๋ด์์ ์ฌ์ฉ๋๋ ๊ฐ์ ํด๋์ค ์ธ๋ถ์์ ๊ฐ์ถ๋ ค๋ฉด private ์์ฑ์ ์ด์ฉํ์
class Human {
constructor(public name: string, private age: number) {
this.age = age;
this.name = name;
}
}
const man = new Human('ํฉํฉ', 18);
const sayHi = (person: Human): string => {
return `๋์ด๋? ${person.age}?`;
};
console.log(sayHi(man));
// src/index.ts(28,52): error TS2341: Property 'age' is private and only accessible within class 'Human'.
// private ์ค์ ํ ๊ฐ์ผ๋ก ์๋ฌ๋ฅผ ์ถ๋ ฅํ๋ค.
.ts์ .tsx ์ ์ฐจ์ด์ js์ jsx, ts์ tsx์ ์ฐจ์ด / jsx๋ฅผ js๋ก ๋ณํํ๋ ๊ณผ์
TS (TypeScript): TypeScript๋ JavaScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ ์ ํ์
๊ฒ์ฌ๋ฅผ ์ง์ํ๋ JavaScript์ ์ํผ์
์ด๋ค. TS๋ ๋๊ฐ .ts ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค.TSX (TypeScript with JSX): TSX๋ React์์ UI๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ TypeScript์ด๋ค. React์์ JSX๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก .tsx ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค.++ ์ถ๊ฐ
JS ํ์ผ์ ์ผ๋ฐ์ ์ธ JavaScript ์ฝ๋๋ฅผ ํฌํจํ๋ค. ํจ์, ๋ณ์, ์ ์ด๋ฌธ ๋ฐ ๊ฐ์ฒด์ ๊ฐ์ JavaScript์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ ํ์ผ์ด๋ค. JS ํ์ผ์ React์์ UI๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ง๋ง, JSX๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
JSX ํ์ผ์ HTML๊ณผ JavaScript๋ฅผ ํผํฉํ ๋ฌธ์์ด๋ค. JSX ํ์ผ์๋ JavaScript ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ง๋ง, HTML ์์์ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ React์์ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด, JSX์์๋ HTML ์์์ ์ ์ฌํ <div> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ React ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์๋ค.
JS์ JSX์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ JSX๊ฐ HTML๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ React UI๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๋ ์ ์ด๋ค. JSX๋ JavaScript ์ฝ๋๋ฅผ ํฌํจํ์ง๋ง, HTML ์์์ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ React์์ UI๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ๋์์ค๋ค.
ํ์
์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ(tsc)
ํ์
์คํฌ๋ฆฝํธ(Typescript) ์ดํดํ๊ธฐ-1 (์ ์, ๋์์๋ฆฌ, ํน์ง)
๋ฐ๋ฒจ(Barbel)
ํธ๋์ค ํ์ผ๋ฌ(Transplier) : ํ ์ธ์ด๋ก ์์ฑ๋ ์์ค์ฝ๋๋ฅผ ๋น์ทํ ์์ค์ ์ถ์ํ๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๋๊ฒ
์ ์ ํ์
, ๋์ ํ์
: ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ์
์ ๊ณง ์๋ฃํ์ด๋ผ๋ ๋ง์ด๋ค.
์ ์ ํ์
์ธ์ด vs ๋์ ํ์
์ธ์ด
์ธํฐํ๋ฆฌํฐ ์ธ์ด : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(๊ณ ๊ธ์ธ์ด)๋ฅผ ์ปดํ์ผ ๋ณํ ์์ด ๋ฐ๋ก ์ฌ์ฉํ๋ ์ธ์ด๋ฅผ ๋งํ๋ค.
ex) ์๋ฐ์คํฌ๋ฆฝํธ
์ปดํ์ผ ์ธ์ด : ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์ณ์ ๊ธฐ๊ณ์ด๋ก ๋ชจ๋ ๋ณํ๋์ด ์คํ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด. (์ธํฐํ๋ฆฌํฐ ์ธ์ด์๋ ๋ค๋ฅด๊ฒ ์ธํฐํ๋ฆฌํฐ๋ฅผ ๊ฑฐ์น์ง ์์ ์๋๊ฐ ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค.)
์ปดํ์ผ๋ฌ(Complier)๋?
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(๊ณ ๊ธ์ธ์ด)๋ฅผ ์ปดํจํฐ๊ฐ ์ดํด ํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ณํ์ํค๋ ๊ณผ์ ์ ๋งํ๋ค.
ex) ์์ค์ฝ๋ โ ๋ฐ์ด๋๋ฆฌ ์ฝ๋์ผ๋ก ๋ณํ
๋ฌ๋ ์ปค๋ธ(Learning Curve) : ํน์ ๊ธฐ์ ๋๋ ์ง์์ ์ค์ ํ์ํ ์
๋ฌด์ ๊ฐ์ ํ๊ฒฝ์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋๋ ํ์ต ๋น์ฉ์ ์๋ฏธํ๊ธฐ๋ ํ๋ฉฐ ํน์ ๊ธฐ์ ์ ์ต๋ํ ๋์ ์ฒ์์๋ ํ์ต ํจ๊ณผ๊ฐ ๋๋๋ค๊ฐ ์ด๋ ์ ๋ ์ดํด๋ฅผ ํ๊ณ ๋๋ฉด ๋น ๋ฅด๊ฒ ์ต๋ํ๊ณ ํ์๋ ๋ค์ ๋๋์ง๋ ๊ณก์ ์ ๋ํ๋ด๊ธฐ๋ ํ๋ค.
[IT] ๋ฌ๋์ปค๋ธ(Learning Curve) ๋?
์ํผ์ : ์์ ํ์ฅ์ด๋ผ๋ ๋ป, ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ด์ธ์ ํ์ ์คํฌ๋ฆฝํธ ๋ง์ ํด๋์ค, ์ธํฐํ์ด์ค๋ฑ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจํด์ด ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ์ ์๋ฏธํ๋ค
var person: User = {
โage: 30,
โname: 'aa'
}
function getUser(user: User) {
โconsole.log(user);
}
interface StringArray {
โ[index: number]: string;
}
var arr2: StringArray = ['a', 'b', 'c'];
arr[0] = 10 //Error;
interface StringRegexDictionary {
โ[key: string]: RegExp
}
var obj: StringRegexDictionary = {
โcssFile: /\.css$/,
โjsFile: 'a' //Error
}
obj['cssFile'] = /\.css$/;
obj['jsFile'] = 'a' //Error
interface Person{
โname: string;
โage: number;
}
interface User extends Person{
โlanguage: string;
}
function askSomeone(someone: Developer2 | Person) {
โconsole.log(someone);
}
(๋งค๊ฐ๋ณ์ ์์ | ๋ฅผ ์๋ฏธํ๋ ๊ฒ ๊ฐ๋ค)
function askSomeone(someone: Developer & Person) {
โconsole.log(someone);
}
(๋งค๊ฐ๋ณ์ ์์ & ๋ฅผ ์๋ฏธํ๋ ๊ฒ ๊ฐ๋ค. ํ์ฌ์์ ์์
ํ ๋๋ &&๋ฅผ ์ผ๋ ๊ฒ ๊ฐ์๋ฐ.. ๊ทธ๊ฒ๋ ์กฐ๊ธ ๋ ๊ณต๋ถํด๋ณด๋๋ก ํ์)
ํ๊ฐ์ง ํ์
๋ณด๋ค ์ฌ๋ฌ๊ฐ์ง ํ์
์์ ๋์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ ๋ค๋ฆญ์ด๋ ํ์
์ ๋ง์น ํจ์์ ํ๋ผ๋ฏธํฐ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
function logText <T> (text: T):T {
โreturn text;
}
logText<string>('aa');
logText<number>(100);
์ด๊ฒ ๋ญ์ง
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ๋๋ฅผ ํด์ํ๋ ๊ณผ์
var a = true;
a = 100; //Error
ํด๋น ์ฝ๋๋ a ๋ณ์๋ฅผ Boolean ํ์
์ผ๋ก ์ถ๋ก ํ๊ธฐ ๋๋ฌธ์ Number ํ์
์ ํ ๋นํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Union ํ์
์ผ๋ก๋ฌถ์ด๋๊ฐ๋ ๊ฒvar arr = [1, 2, true];
ํ์
์คํฌ๋ฆฝํธ๋ ํด๋น ์ฝ๋์ ํ์
์ Number | Boolean์ผ๋ก ์ ์ํ๋ค.
interface Dropdown<T>{
โvalue: T,
โtext: 'String'
}
var items: Dropdown<boolean> {
โvalue: true,
โtext: 'aa'
}
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ํด์ํ๋ ๊ฒ๋ณด๋ค ๋ ํ์คํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ๊ฐ๋ฐ์๊ฐ ํด๋น ์ฝ๋์ ํ์ ์ ์ง์ ์ง์ ํ๋ ๊ฒ
var a;
a = 10;
a = 'string';
var b = a as string;
(as string ์ ์๋ฏธํ๋ ๋ฏ ํ๋ค)
Dom API ์กฐ์์์ ๋ง์ด ์ฌ์ฉํ๋ค
//ํ์
์ถ๋ก ์ HTMLDivElementใ
ฃnull๋ก ๋ฐํ
var div = document.querySelector('div') as HTMLDivElement;
div.innerText;
์์ ํ์
๋จ์ธ์ผ๋ก null์ ๋๋นํ ๋ถ๊ธฐ๋ฌธ์ ์์ฑํ์ง ์์๋ ๋๋ค.
null์ ๋๋นํ ๋ถ๊ธฐ๋ฌธ์ ์์ฑํด์ผ๋ผ? ๊ณต๋ถํ ๊ฑฐ ๊ฐ๋ง๋ด์..
interface Developer {
โname: string;
โage: string;
}
interface Person {
โname: string;
}
var developer: Developer;
var person: Person;
developer = person; //Error
person = developer;
person์ด developer๋ณด๋ค ๋ฒ์ฃผ๊ฐ ๋์ผ๋ฏ๋ก developer = person; ๊ตฌ๋ฌธ์ด ์๋ฌ๊ฐ ๋๋ ๊ฒ
type๊ณผ interface์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์
References
1. ํ์ฉ๋๊ฐ ๋์์ง๋ ์น ํ๋ก ํธ์๋ ์ธ์ด, ํ์ ์คํฌ๋ฆฝํธ(TypeScript) - ์ผ์ฑSDS ์ธ์ฌ์ดํธ ์ํ์
2. Typescript #1 ์ค์น์ ๊ธฐ๋ณธ์ฌ์ฉ๋ฒ - hwang-eunji.log