-
Notifications
You must be signed in to change notification settings - Fork 7
π 10μ 26μΌ μ€ν¬λΌ κΈ°λ‘
Chun Hwa Park edited this page Oct 26, 2021
·
1 revision
νμ μ€ν¬λ¦½νΈ νΈλλΆμΌλ‘ κ°μ 곡λΆν λ€(κΈ°λ³Έ νμ , μΈν°νμ΄μ€), νμ μ€ν¬λ¦½νΈλ₯Ό μ΄λ² νλ‘μ νΈμ μ μ©ν¨μΌλ‘μ¨ μ»λ μ₯μ κ³Ό λ¨μ μ λν΄ λ Όμ
- νμ μ΄ λͺ ννλ€. (+ λ°±μλ λͺ¨λΈ κ°λ°μ μ’λ€)
- TypeORM μ΄μ© κ°λ₯. (+ JPAμ λ¬Έλ²μ΄ λΉμ·νλ€.)
- νμ μ λν μ 리λ₯Ό νμ€νκ² νλ©΄ λ³λμ API λ¬Έμ μλνκ° νμ μμ κ² κ°λ€.
/* 1. λͺ
μμ μ묡μ μΈν°νμ΄μ€ */
/* TypeScript */
// λͺ
μμ μΈν°νμ΄μ€
interface Greetable {
greet: () => void;
}
function hello(someone: Greetable) {
someone.greet();
}
/* JavaScript */
function hello(someone) {
// μ묡μ μΈν°νμ΄μ€
// -> μλ μμ±μ μ¬μ©νλ©΄ λ°νμμμ μλ¬κ° λλ€.
// μ¬μ©μκ° μΈμλ‘ μ΄λ€ νμ
μ΄ μ¬μ©λλμ§ μκ³ μλ€κ³ λ¨μ νλ€.
someone.greet();
}
/*
* 2. λ¬Έμμ μ½λν
* μλμ κ°μ κ²½μ°μμ μλ°μ€ν¬λ¦½νΈλ λ¬Έμνκ° λ°λμ λλ°λμ΄μΌ νμ§λ§,
* νμ
μ€ν¬λ¦½νΈλ λ³λμ λ¬Έμν μμ΄ Union νμ
μ μΈμ ν΅ν΄μ λ°νμ μ΄μ κ²μ¬κ° κ°λ₯νκ³
* VSCodeμ μλμμ±μ λμμ λ°μ μ μλ€.
*/
/* TypeScript */
type SomeType = "foo" | "bar" | "baz";
const myType: SomeType = "foo";
// ...
const anotherType: SomeType = "ham"; // Error
/* JavaScript */
// myTypeμλ "foo", "bar" λλ "baz" λ§ μ¬ μ μλ€.
const myType = "foo";
// ...
const anotherType = "ham"; // μ μ¬μ λ²κ·Έ
/* 3. νμ
μμμ μ΄μ */
/* TypeScript */
interface Product {
price: number;
name: string;
}
function buyProduct(product: Product) {
console.log('κ°:', product.price);
}
// ... μΈν°νμ΄μ€μ λ³κ²½
interface Product {
cost: number; // λ³κ²½λ¨
name: string;
}
function buyProduct(product: Product) {
// costλ‘ λ°λμ΄ λ―Έλ¦¬ λ°νμμ€λ₯λ₯Ό λ°μν κ²μ μ‘μμ€λ€.
console.log('κ°:', product.price); // Error
}
/* JavaScript */
// μΈν°νμ΄μ€κ° λ°λλ©΄ λ¬Έμνλ λ΄μ©μ μ
λ°μ΄νΈλ μ£Όμμ ν΅ν λ©λͺ¨, λλ νμκ°μ μν΅μ±λμ ν΅ν΄
// λͺ¨λ νμμ΄ λ³κ²½μ¬νμ μΈμ§νκ²μ νμΈν΄μΌ νλ€.
- νλ‘μ νΈμμ μ¬μ©νλ νμ μ μκ° λ§μμ§λ©΄ κ΄λ¦¬νκΈ° νλ€μ΄μ§λ€.
- λΌμ΄λΈλ¬λ¦¬ μ¬μ© μμ λΌμ΄λΈλ¬λ¦¬μμ μ μν νμ μ λ³λλ‘ κ³΅λΆν΄μΌ νλ€.
- νμ¬ μν©, λ―μ μΈμ΄μ μ μ κΈ°κ°μ΄ νμνλ€.
- Anyλ₯Ό λ¨μ©ν κ°λ₯μ±μ΄ μλ€.
- κ°λ μ±μ΄ μ’μ§ μλ€...? / νμ μ λν΄ μ€λ₯κ° λ§μ΄ λ°μνλ€.
κ²½κΈ°μ¬μ²μ wiki μ λλ€. π