2. TypeScript
Keyword
REPL
TypeScript
2-1 Interface vs Type
2-2 νμ μΆλ‘
2-3 Union Type vs Intersection Type
2-4 Optional Parameter
1. REPL
Read-Eval-Print Loopμ μ½μ μΈν°νλ¦¬ν° μΈμ΄μμ μ¬μ©λλ λνν κ°λ° λꡬ λλ νκ²½μΌλ‘ ν°λ―Έλμ μ½λλ₯Ό μ λ ₯νλ©΄ μ¦μ μ€ν κ²°κ³Όλ₯Ό λ°μ μ μλ€.
2. TypeScript
TypeScriptλ λμ νμ μΈμ΄μΈ JavaScriptμ μ μ νμ μ λΆμ¬ν μΈμ΄μ΄λ€. λΈλΌμ°μ λ JavaScript νμΌλ§ μ€ν κ°λ₯νλ―λ‘ λ³ν κ³Όμ μΈ μ»΄νμΌμ΄ νμνλ€.
μ νμ
μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν΄μΌν κΉ?
μ½λ λ 벨μμ μλ¬μ μ¬μ μλ°©
νΈμ§κΈ°μ μ½λ κ°μ΄λ λ° μλ μμ± κΈ°λ₯ (κ°λ° μμ°μ± ν₯μ)
νΉμ λ³μμ νμ μ΄ μ§μ λμ΄ μμκ²½μ° ν΄λΉ νμ μ μ¬μ©κ°λ₯ν APIλ₯Ό 미리 λ³΄κΈ°λ‘ κ°μ΄λ ν΄μ€λ€.
μ§μ§ 2λ²μ΄ μ§λλ² κΈ°
VSC ν΄μ λ΄λΆκ° TSλ‘ μμ±λμ΄ μμ΄ TSκ°λ°μ μ΅μ νλμ΄ μλ€κ³ νλ€.
2-1 Interface vs Type
TypeScriptμμ νμ μ μ μνλ λ°©λ²λ€λ‘ Type(Type alias)κ³Ό Interfaceμ κ²°μ μ μ°¨μ΄λ νμ μ νμ₯(extends) κ°λ₯ μ¬λΆμ μλ€.
1. Interface
κ°μ²΄ λλ ν΄λμ€ κ°μ ꡬ쑰νλ νμ μ μ μν λ μ μ©νλ€.
2. Type alias
μ μ°ν νμ μ μ μ 곡 (Union, intersection, tuple λ±)
/* interfaceλ μ΄λ¬ν λ°©λ²μΌλ‘ μ§μ νμ
μ°μ°μ μ¬μ©μ΄ λΆκ°λ₯ */
type Color = 'white' | 'blue' | 'red';
/* κ°μ²΄, ν΄λμ€ κ΅¬μ‘° νμ
μ μμ μ μ© */
interface Info {
id: number;
name: string;
}
2-2 νμ
μΆλ‘ (Type Inference)
λ³μλ±μ νμ μ λ°λ‘ μ§μ νμ§ μμλ νμ μ€ν¬λ¦½νΈκ° μ½λλ₯Ό λΆμν΄ νμ μ μΆλ‘ νλ κ³Όμ μ μλ―Έ
const temp = 10;
// λ³μ temp νμ
μ numberλ‘ μΆλ‘ λ¨
Best Common Type
μ¬λ¬ ννμμ νμ μ λΉκ΅νμ¬ κ°μ₯ κ·Όμ ν νμ μ μ ννλ κ·μΉ
const foo = [1, null]
νμ μ λͺ μμ μΌλ‘ μ§μ νμ§ μμμ§λ§ Best Common Type κ·μΉμ ν΅ν΄
(number | null)[]
νμ μΌλ‘ μΆλ‘ λλ€.
2-3 Union Type vs Intersection Type
μ°μ°μλ₯Ό μ΄μ©ν΄ νμ μ μ μνλ λ°©λ²
1. Union Type
OR μ°μ°μ(||) μ²λΌ 'Aμ΄κ±°λ Bμ΄λ€'λ₯Ό μ μνλ νμ
type Types = string | number;
let foo: Types;
foo = "Hello"; // λ¬Έμμ΄ ν λΉ κ°λ₯
foo = 123; // μ«μ ν λΉ κ°λ₯
2. Intersection Type
ν©μ§ν©μ²λΌ μ¬λ¬κ°μ νμ μ λͺ¨λ λ§μ‘±νλλ‘ νλλ‘ ν©μΉ μ μλ€.
interface Person {
name: string;
age: number;
}
interface Job {
name: string;
job: string;
}
type Manager = Person & Job;
// κ²°κ³Ό
{
name: string;
age: number;
job: string
}
2-4 Optional Parameter
ν¨μ νΈμΆ μ λ§€κ°λ³μ, μΈν°νμ΄μ€λ₯Ό μ¬μ©ν λ μ μ λ μμ±μ μλ΅ ν μ μλ€. λν μ μλμ΄ μμ§ μμ μμ±μ λν΄ μΈμ§ν μ μλ€.
function foo(x: number, y?: number) {
console.log(`x: ${x}, y: ${y}`);
}
foo(10) // x: 10, y: undefined (λ§€κ°λ³μ y μλ΅κ°λ₯)
interface Person {
name: string;
age?: number;
}
const bar = {
name: 'dongdong',
age: 30,
};
console.log(bar.oo); // μ€λ₯
μΆκ° ν€μλ μ 리
d.ts(declaration)
νμ μ€ν¬λ¦½νΈ μ½λμ νμ μΆλ‘ μ λλ TS μ μΈ νμΌ
μ νΈλ¦¬ν° νμ
Partial, Pick, Omit λ± κΈ°μ‘΄μ μ μλ νμ μ κ°μ§κ³ μ¬μ μ ν λ μ μ©
μ λλ¦
νμ μ λ§μΉ ν¨μμ νλΌλ―Έν°μ²λΌ μ¬μ©ν μ μλ€.
Last updated