π κΈμ μμνκΈ° μ μ
ν΄λΉ κΈμ νμ μ€ν¬λ¦½νΈ νλ‘κ·Έλλ° μ± κ³Ό μ λ°λ―Έ νμ μ€ν¬λ¦½νΈ κ°μλ₯Ό 곡λΆνμ¬ μ 리ν κΈμ λλ€.
μμ ν΄μΌ ν λΆλΆμ΄ μλ€λ©΄ μΈμ λ μ§ μλ €μ£ΌμΈμ!
νμ 리ν°λ΄μ΄λ?
μ± μμλ μ€μ§ νλμ κ°μ λνλ΄λ νμ μ΄λΌκ³ μκ°νκ³ μλ€.
λͺ¨λ κ³³μμ μΌμ΄λ μ μλ μ€μλ₯Ό λ°©μ§ν΄ μμ μ±μ νλ³΄ν΄ μ£Όλ κ°λ ₯ν μΈμ΄ κΈ°λ₯μ΄λΌκ³ λΆμ° μ€λͺ μ ν΄μ£Όκ³ μλ€.
λλ λ§ κ·Έλλ‘ κ°μ νμ μΌλ‘ μ¬μ©νλ κ²μ΄λΌκ³ μ΄ν΄νκ³ ν° μ΄λ €μμ΄ μλ κ°λ μ΄μλ€.
let answer: true = true;
answer = false; // Type 'false' is not assignable to type 'true'.
μ μ½λμ²λΌ answerμ νμ μ trueλ‘ μ§μ νλ©΄ μ΄ν κ°μ λ³κ²½νμ§ λͺ»νλ€.
constμ κ°μ μν μ νλꡬλλΌκ³ μκ°μ΄ λ€μλ€.
κ·Έλ¬λ©΄ μ΄λ¬ν κ°λ ₯ν κΈ°λ₯μ μ΄λ»κ² νμ©ν μ μμμ§ κΆκΈν΄μ‘λ€.
μ€μ νλ‘μ νΈμμλ μ μ¬μ©λ λ§ν μμλ₯Ό κ°μμμ λ³Ό μ μμλ€.
νμ 리ν°λ΄ νμ©νκΈ°
μ«μ λλ λ΄μ©μ΄ μ«μμΈ λ¬Έμμ΄μ μ λ ₯λ°μ μνλ νμ μΌλ‘ μΆλ ₯λ μ μλλ‘ νλ μ½λλ₯Ό μμ±νλ€κ³ μκ°ν΄λ³΄μ.
κ·Έλ¬λ©΄ λλ μ΄λ κ² μ½λλ₯Ό μμ±ν κ² κ°λ€.
function combine(input1: number | string, input2: number | string, resultType: string) {
if (resultType === 'text') {
return input1.toString() + input2.toString();
}
if (resultType === 'number') {
return Number(input1) + Number(input2);
}
return 'μ λ¬λ°μ κ²°κ³Ό νμ
μ μμ±ν΄μ£ΌμΈμ.'
}
const combineAges = combine(30, 26, 'number');
console.log(combineAges); // 56
console.log(typeof combineAges); // number
νμ§λ§ μ΄ μ½λμμ λ°μν μ μλ λ¬Έμ μ μ,
resultTypeμ μμ±νλ κ²μ΄ μ¬λλ§λ€ λ€λ₯Ό μ μμ΄μ μ ννκ² 'text'μ 'number'λ‘ κ°μ μ λ ₯λ°κΈ°κ° μ΄λ €μΈ μ μλ€λ μ μ΄λ€.
λ ν° λ¬Έμ λ μ€λ₯κ° λ°μνμ§ μλ μ μ΄λ€.
λ§μ½ 'as-text'λ‘ μΈλ²μ§Έ μΈμλ₯Ό μ λ¬νμ λ, μ€λ₯κ° λ°μνμ§ μκ³ 'μ λ¬λ°μ κ²°κ³Ό νμ μ μμ±ν΄μ£ΌμΈμ.' λΌλ κ°λ§ λ°νλλ
μ΄λ¦¬λ₯μ ν κ² κ°λ€.
κ·Έλ λ€κ³ λ°νκ°μ 'μ λ¬λ°μ κ²°κ³Ό νμ μ text λλ numberλ‘λ§ μμ±ν΄μ£ΌμΈμ.' λΌκ³ λλ κ²λ λλΉλΌλ μκ°μ΄ λ€μλ€.
μ΄λ₯Ό μμν ν΄μ κ°μ νμ©ν μ μκ² μ§λ§,
const TEXT = 'text';
const NUMBER = 'number';
λ§μ½ μ νμ§κ° λ§μμ§λ€λ©΄ μ΄λ€ κ°μ΄ μ νμ§λ‘ μμλμ§ κΈ°μ΅μ νκΈ°κ° μ΄λ €μΈ μ μμΌλ©°,
μ ν΄μ§ κ°μ΄ μλ λ€λ₯Έ κ°μ μμ±νμ λ μ€λ₯κ° λ°μνμ§ μλ λ¬Έμ μ μ κ·Έλλ‘μ΄λ€.
μ΄λ΄ λ νμ 리ν°λ΄μ μ¬μ©νλ©΄ ν¨μ¬ κ°νΈν΄μ§λ€.
function combine(input1: number | string, input2: number | string, resultType: 'text' | 'number') {
if (resultType === 'text') {
return input1.toString() + input2.toString();
}
if (resultType === 'number') {
return Number(input1) + Number(input2);
}
return;
}
combine(12,23,'as-text'); // Error: Argument of type '"as-text"' is not assignable to parameter of type '"number" | "text"'.
μΈμμ νμ μ μ λ ₯λ°μ κ°μΌλ‘ μ ν΄λλ€λ©΄ μλν λ°μ λ€λ₯Έ κ°μ μμ±νμ λ μ€λ₯κ° λ°μνλ κ²μ νμΈν μ μλ€.
κ·Έλ¦¬κ³ μ΄λ€ κ°μ΄ μμΌνλμ§λ μλ €μ£Όλ λμ± μ’λ€.
Type alias(νμ λ³μΉ)λ‘ μμ ν΄λ³΄κΈ°
type aliasλ let, constλ‘ λ³μλ₯Ό μ μΈνλ―μ΄ typeμΌλ‘ νμ μ μ μΈνλ κ²μ΄λ€.
μ¬μ©λ²μ λ€μκ³Ό κ°λ€.
type Person = {
name: string,
age: number
}
const driver: Person = {
name: 'JaeYeong',
age: 100
}
// νμ
λ³μΉμ μ¬μ©νμ§ μμμ λ
const driver: {
name: name: string,
age: number
} = {
name: 'JaeYeong',
age: 100
}
μ΄λ₯Ό νμ©ν΄μ combineν¨μλ₯Ό λμ± κ°λ¨νκ² μμ ν μ μλ€.
type ResultType = 'number' | 'text';
function combine(input1: number | string, input2: number | string, resultType: ResultType) {
if (resultType === 'text') {
return input1.toString() + input2.toString();
}
if (resultType === 'number') {
return Number(input1) + Number(input2);
}
return;
}
μ§κΈμ κ°μ΄ κ°λ¨νκ² λκ°λΏμ΄μ΄μ 체κ°μ΄ λ λ μ μμΌλ 볡μ‘ν μ νμ§κ° μλ€λ©΄ λ μ’μ μ νμ΄μ§ μμκΉ μΆλ€.