νλΌλ―Έν° λλ λ³μμ νλμ νμ μ΄μμ μ¬μ©ν μ μκ² ν΄μ£Όλ κ² μ λλ€.
Union Type μμ
function logMessage(value: string){
console.log(value)
}
logMessage('hello');
logMessage(100); // number νμ
μ΄ λ€μ΄μ€κΈ°μ μ€λ₯
// μ«μλ₯Ό ν¬ν¨μν€κ³ μΆμΌλ©΄ string -> any λ‘ λ°κΎΈλ©΄ λλ€. <- νμ
μ μ₯μ μ΄ μμ΄ μ§λλ€.
- μ λμ¨ νμ μ μ¬μ©νλ©΄ β
function Message(value: string | number){
console.log(value);
}
Message('hello');
Message(100) // λ κ°μ§ νμ
λͺ¨λ λ°μ μ μμ΅λλ€.
β μ¬μ©λ²
|
ν€μλ μ¬μ©- ~ μ΄κ±°λ, μλλ₯Ό 보면 μ μ€μ νλ
let hyunho: string | number | boolean;
β μ λμ¨ νμ μ₯μ
- νμ κ°λ ν¨κ³Ό
- νμ κ°λ : νΉμ νμ μΌλ‘ νμ μ λ²μλ₯Ό μ’νλκ°λ(νν°λ§ νλ) κ³Όμ
function Message(value: string | number){
if(typeof value === 'number'){
value.toLocaleString
// κ° νμ
μ λ§κ² μΆλ‘ μ΄ λκΈ° λλ¬Έμ ν΄λΉ νμ
μ API λ₯Ό μ¬μ©ν μ μκ² λ©λλ€.
// νμ
κ°λ : νΉμ νμ
μΌλ‘ νμ
μ λ²μλ₯Ό μ’νλκ°λ(νν°λ§ νλ) κ³Όμ
}
if(typeof value === 'string'){
value.toString();
}
throw new TypeError('value must be string or number');
}
Message('hello');
Message(100)
β μ λμ¨ νμ νΉμ§
interface Developer{
name: string;
skill: string;
}
interface Person{
name: string;
age: number;
}
function askSomeone(someone: Developer | Person){
someone.name
// someone.skill λΆκ°λ₯
}
- Developer μ Person μ΄ κ°μ§κ³ μλ λͺ¨λ μμ±μ μ¬μ©ν μ μλ€κ³ μκ° ν μ μμ΅λλ€.
- μ€μ λ‘λ
name
λ§ μ¬μ©ν μ μμ΅λλ€. - μ΄μ λ, someone μ μ΄λ€ κ°μ΄ λ€μ΄μ¬μ§ λͺ¨λ₯΄κΈ° λλ¬Έμ Developer λ λμΌνκ³ , Person λ λμ΄μΌ ν©λλ€.
- μ¦, νμ
μ€ν¬λ¦½νΈμμ μ½λ μ μλ¬κ° λ°μν μ μλ€κ³ μκ°νκΈ° λλ¬Έμ,
μΈν°νμ΄μ€λ νΉμ ꡬ쑰체λ₯Ό μ λμ¨ νμ μΌλ‘ μ¬μ©νλ©΄ 보μ₯λ μμ±λ§ μ 곡 ν©λλ€.
β Intersection Type
&
ν€μλ μ¬μ©- ~ μ΄λ©΄μ, μλλ₯Ό 보면 μΈ κ°μ νμ μ μ λΆ λ§μ‘±νλ
let capt: stirng & number & boolean;
β μΈν°μΉμ νμ νΉμ§
interface Developer{
name: string;
skill: string;
}
interface Person{
name: string;
age: number;
}
function askSomeone(someone: Developer & Person){
someone.name;
someone.skill;
someone.age;
}
- Developer μ Persone μ μμ±μ λͺ¨λ ν¬ν¨ν someone μ λλ€.
- 곡ν΅λ μμ±λ§ μ¬μ©μ΄ κ°λ₯ν μ λμ¨ νμ κ³Όμ μ°¨μ΄μ
μ λμ¨κ³Ό μΈν°μΉμ μ μ°¨μ΄μ ( νΈμΆνλ κ΄μ ) β
β Union Type
function askSomeone(someone: Developer | Person){
}
askSomeone({name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°'})
askSomeone({name: 'μΊ‘ν΄', age: '100'})
- askSomeone μ λ€μ΄κ°λ μΈμλ‘, Developer λ Perosn μ΄κΈ° λλ¬Έμ λ μ€ νλμ λ°μ΄ν°λ₯Ό μ£Όλ©΄ λ©λλ€.
β Intersection Type
function askSomeone(someone: Developer & Person){
}
// μλ¬
askSomeone({name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°'})
// μ΄μ λ Developer μ μμ±κ³Ό Persone μ μμ±μ λͺ¨λ λκ²¨μΌ ν©λλ€.
// μλμ κ°μ΄ μ¬μ©
askSomeone({name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°', age: 34})
μ°Έκ³
'π Front-End > TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νμ μ€ν¬λ¦½νΈμ ν΄λμ€ (0) | 2022.10.23 |
---|---|
Enum ( μ΄λ ) (0) | 2022.10.22 |
Type Aliases ( νμ λ³μΉ ) (0) | 2022.10.22 |
Interface ( μΈν°νμ΄μ€ ) (0) | 2022.10.22 |
νμ μ€ν¬λ¦½νΈμ ν¨μ (0) | 2022.10.22 |