(λ¬λ νμ μ€ν¬λ¦½νΈ) 5~6μ₯
π κΈ°μ μ± μ€ν°λ
23λ
1μλΆν° νλ μ€μΈ κ΅μ‘μμ, λ»μ΄ λ§λ λλ£λ€κ³Ό ν¨κ» μ§ννκ² λ μ€ν°λ
μμΌλ‘λ κΎΈμ€ν κΈ°μ μμ μ μ½κ³ ν¨κ» λ°μ νλ μκ°μ΄ λμμΌλ©΄ μ’κ² λ€!
5μ₯. ν¨μ
μ νμ 맀κ°λ³μ
μ νμ κ°μ²΄ νμ μμ±κ³Ό μ μ¬νκ² νμ μ λν μ΄μ μ : μμ ?λ₯Ό μΆκ°ν΄ 맀κ°λ³μκ° μ νμ μμ λνλΌ μ μλ€.
μ νμ 맀κ°λ³μλ λ°λμ λ§μ§λ§μ μ λ¬ν΄μ€μΌνλ€.
μ νμ 맀κ°λ³μμλ κΈ°λ³Έμ μΌλ‘ undefinedκ° ν λΉλκΈ° λλ¬Έμ, ν¨μ λ΄λΆμ | undefined
μ λμΈ νμ
μ΄ μΆκ°λλ€.
const add = (first: number, second?: number) => {
return first + (second ? second : 0);
}
---
// μλμ μ½λμ μμ μ½λλ λ€λ₯΄λ€.
// μλ μ½λλ 2λ²μ§Έ μΈμλ₯Ό λ°λμ μ λ¬ν΄μ€μΌνλ€.
const add = (first: number, second: number | undefined) => {
return first + (second ? second : 0);
}
λλ¨Έμ§ λ§€κ°λ³μ
function test(singer: string, ...songs: string[]) {}
λͺ μμ λ°ν νμ
λ³μμ λ§μ°¬κ°μ§λ‘ νμ μ λν μ΄μ μ μ¬μ©ν΄ ν¨μμ λ°ν νμ μ λͺ μμ μΌλ‘ μ μΈνμ§ μλ κ²μ΄ μ’λ€.
맀κ°λ³μ λͺ©λ‘μ΄ λλλ ) λ€μ νΉμ ν¨μ μ μΈμ κ²½μ° { μμ λ°°μΉνλ€.
κ·ΈμΈ λ°ν νμ
void
ν¨μκ° μ΄λ€ κ°λ λ°ννμ§ μλ κ²½μ°, voidλ₯Ό ν΅ν΄ λ°ν νμ μ νμΈν μ μλ€.
ν¨μ νμ μ μ μΈν λ, voidλ₯Ό μ¬μ©νλ©΄ ν¨μμμ λ°νλλ λͺ¨λ κ°μ΄ 무μλλ€.
JSμμμ ν¨μλ μ€μ κ°μ΄ λ°νλμ§ μμ κ²½μ°, κΈ°λ³ΈμΌλ‘ λͺ¨λ return undefined
κ° λμ§λ§ voidλ μ΄ return undefined
μλ λ€λ₯΄λ€. voidλ λ°ν νμ
μ΄ λ¬΄μλλ€λ κ²μ μλ―Ένλ€.
voidλ₯Ό λ°ννλλ‘ μ μΈλ νμ μμΉμ μ λ¬λ ν¨μκ° λ°νλ λͺ¨λ κ°μ 무μνλλ‘ μ€μ ν λ μ μ©
μμ)
const records: string[] = [];
function test(records: string[]) {
records.forEach((record) => records.push(record));
}
// μ€μ pushλ λ°°μ΄μ κ°μ λ£κΈ°λ νμ§λ§, λμμ pushν κ°μ λ°ννλ€. μ΄ λ, forEachλ μ½λ°±μΌλ‘ λ°λ ν¨μμ λ°νκ°
// void μ²λ¦¬λμ΄ μκΈ° λλ¬Έμ μμ κ°μ΄ μΈ μ μλ κ²μ΄λ€.
never
μ΄λ€ ν¨μλ κ°μ λ°ννμ§ μκ³ λ°νν μκ°λ μλ€. never λ°ν ν¨μλ μΌλΆλ¬ νμ μ€λ₯λ₯Ό λ°μμν€κ±°λ 무ν 루νλ₯Ό μ€ννλ ν¨μμ΄λ€. λͺ
μμ μΌλ‘ : never
λ₯Ό ν¨μΌλ‘μ¨ ν΄λΉ ν¨μλ₯Ό νΈμΆν ν λͺ¨λ μ½λκ° μ€νλμ§ μμμ λνλΈλ€.
function fail(message: string): never {
throw new Error(`μλ¬ λ°μ: ${message}`);
}
!. voidλ μ무κ²λ λ°ννμ§ μλ ν¨μ
λ₯Ό μν κ², neverλ μ λ λ°ννμ§ μλ ν¨μ
λ₯Ό μν κ²
ν¨μ μ€λ²λ‘λ
ꡬν μκ·Έλμ²μ κ·Έ ν¨μμ λ³Έλ¬Έ μμ μλ‘ λ€λ₯Έ λ²μ μ ν¨μ μ΄λ¦, 맀κ°λ³μ, λ°ν νμ μ μ¬λ¬ λ² μ μΈ
ν¨μ μ€λ²λ‘λλ 볡μ‘νκ³ μ€λͺ νκΈ° μ΄λ €μ΄ ν¨μ νμ μ μ¬μ©νλ μ΅νμ μλ¨μ΄λ€. μ¦, κ°λ₯νλ©΄ μ°μ§ μκ² λ¨μνκ³ μ§κ΄μ μΈ ν¨μλ₯Ό ꡬννλ κ² λ μ’λ€.
function createDate(timestamp: number): Date;
function createDate(month: number, day: number, year: number): Date;
function createDate(month: number, day?: number, year?: number) {
return day === undefined || year === undefined ? new Date(monthOrTimestamp) : new Date(year, monthOrTimestamp, day);
}
6μ₯. λ°°μ΄
λ°°μ΄ νμ
let basicNumbers: number[] = [1, 2, 3];
let standardNumbers: Array<number> = [1, 2, 3]; // Array class + number generic
μ£Όμμ¬ν: λΆμμ ν λ©€λ²
TSμ νμ μμ€ν μ κΈ°μ μ μΌλ‘ λ€μ λΆμμ νλ€. λλ‘λ κ° νμ μ λν νμ μμ€ν μ μ΄ν΄κ° μ¬λ°λ₯΄μ§ μμ μ μλ€.
μλμ μ½λλ μ€ννλ©΄ λΉμ°ν μλ¬κ° λ°μνμ§λ§, μ΄μ μ νμ μμ€ν μμ μλ¬λ₯Ό λ°μμν€μ§ μλλ€.
function printElementsLength(elements: string[]) {
console.log(elements[1116].length);
}
printElementsLength(["I'm", "Jayden"]);
- TSμ λ°°μ΄ μ‘°νλ₯Ό λ μ ννκ³ νμ
μ μμ νκ² λ§λλ
noUncheckedIndexedAccess
νλκ·Έκ° μμ§λ§ λ무 μ격ν΄μ μ μ¬μ©νμ§ μλλ€.
νν
νν: κ³ μ λ ν¬κΈ°μ λ°°μ΄
let nameAndAge: [string, number];
nameAndAge = ['jayden', 123];
TSμμ νν νμ μ κ°λ³μ μΈ λ°°μ΄λ³΄λ€ λ ꡬ체μ μΌλ‘ μ²λ¦¬λλ€. κ°λ³ κΈΈμ΄μ λ°°μ΄ νμ μ νν νμ μ ν λΉν μ μλ€.
const arr = ['jayden', 1116];
const tup: [string, number] = arr; // error / [string, number] !== (string | number)[]
νν μΆλ‘
μ’ λ ꡬ체μ μΈ νν νμ μμ 2κ°μ§ λ°©λ²μΌλ‘ λνλΌ μ μλ€.
- λͺ μμ νν νμ
- const assertion
const assertion
λ§€λ² λͺ
μμ μΌλ‘ νν νμ
μ μ¨μ£Όλ 건 λ²κ±°λ‘μ΄ μΌμ΄λ―λ‘ as const
λ₯Ό ν΅ν΄ μ’λ νΈνκ² μ½κΈ° μ μ© ννμ μ§μν μ μλ€.
const readonlyTuple = ['jayden', 1116] as const;
// readonlyTupleμ readonlyμΈ tupleλ‘ μ§μ λλ€.