μ°μ°μλ₯Ό μ¬μ©ν΄ νμ μ μ μν μλ μμ΅λλ€.
| μ°μ°μλ₯Ό μ¬μ©νλ μ λμ¨ νμ κ³Ό & μ°μ°μλ₯Ό μ¬μ©νλ μΈν°μΉμ νμ μ΄ μμ΅λλ€.
κ°κ°μ νμ μ΄ κ°μ§λ μ₯μ κ³Ό μ£Όμμ μ΄ μλλ°, μ΄ν΄λ³΄μμ΅λλ€.
1. μ λμ¨ νμ
μ λμ¨ νμ μ λ§μΉ μλ°μ€ν¬λ¦½νΈμ OR μ°μ°μμ²μ λΌ μ¬μ©λ©λλ€.
| μ°μ°μ(|| λ κ° μλκ³ ν κ°!)λ₯Ό μ¬μ©νμ¬ μ¬λ¬ νμ μ μ μν©λλ€.
//1. μ λμ¨ νμ
function unionFunc(value: string | number | boolean){
console.log(value);
}
1-1. μ λμ¨ νμ μ μ₯μ
μ λμ¨ νμ μ μ₯μ μΌλ‘λ, μ¬λ¬ νμ μ μ§μ ν΄μ€ μ μμΌλ―λ‘ νμ λ³ API(λ©μλ)λ₯Ό μλμμ±μΌλ‘ λΆλ¬μ¬ μ μλ€λ κ²μ λλ€. λ§μ½ λͺ¨λ νμ μ΄λΌλ λ»μ anyλ₯Ό μ¬μ©νλ€λ©΄, μ΄λ€ νμ μ΄ μ¬ μ§ λͺ¨λ₯΄λ―λ‘ νμ μ λ°λ₯Έ APIλ₯Ό μλμμ±μΌλ‘ μΈ μ μμλλ°, μ λμ¨ νμ μΌλ‘ μ¬λ¬ κ°λ₯Ό μ μν΄μ£Όλ©΄ νμ μ λ§λ APIλ₯Ό μλμμ± κΈ°λ₯μΌλ‘ νμ©ν μ μμ΅λλ€.
//1-1. μ λμ¨ νμ
μ μ₯μ : νμ
λ³ μλ μμ±
function showMessage(value: string | number | boolean){
if(typeof value === 'string') {
value.toString();
}
if(typeof value === 'number') {
value.toLocaleString();
}
throw new TypeError('type must be string or number');
}
1-2. μ λμ¨ νμ μ£Όμν μ
μμμ μ΄ν΄λ³Έ κ²μ²λΌ ν¨μμ parameter λΆλΆμ νμ μ μ§μ μ§μ ν΄μ€ μλ μμ§λ§, μΈν°νμ΄μ€λ₯Ό 미리 μ μνμ¬ μ¬μ©ν λμλ | μ°μ°μλ₯Ό μ΄μ©ν μ λμ¨ νμ μ μ μν μ μμ΅λλ€. μ΄λ, μ λμ¨ νμ μ΄ OR μ°μ°μμ λμΌνλ€κ³ μκ°νλ©΄ λ€μκ³Ό κ°μ μλ¬λ₯Ό λ°μμν¬ μ μμ΅λλ€.
μλ μμμμλ Developerμ User λΌλ λ μΈν°νμ΄μ€λ₯Ό μ μνμ΅λλ€.
ν¨μμ parameterμ | μ°μ°μλ₯Ό μ¬μ©ν΄ λ μΈν°νμ΄μ€λ₯Ό μ λμ¨ νμ μΌλ‘ μ μν΄μ£Όμλλ°μ.
κ³΅ν΅ μμ±μΈ nameμΌλ‘ μ κ·Όνλ©΄ μλ¬κ° λ°μνμ§ μμ΅λλ€. λ°λ©΄μ
κ°κ° λ°λ‘ κ°μ§κ³ μλ skillκ³Ό age μμ±μ μ κ·Όνλ©΄ μλ¬κ° λ°μν©λλ€.
//1-2. μ λμ¨ νμ
μ£Όμν μ
interface Developer {
name: string,
skill: string
}
interface User {
name: string,
age: number
}
function showUserInfo(someone: Developer | User){
console.log(someone.name);
console.log(someone.skill); //μλ¬ λ°μ
console.log(someone.age); //μλ¬ λ°μ
}
μ λμ¨ νμ μ OR μ°μ°μμ λμΌνκ² μκ°νλ©΄, μμ μλ¬λ μ΄μν©λλ€. μ λμ¨ νμ μ μ¬μ©νμΌλ λ μ€ νλλΌλ λ§μ‘±νλ©΄ μ κ·Όν μ μλ€κ³ μκ°μ΄ λλκΉμ. (κ°μ μ 곡μλμ λ§μ λ°λ₯΄λ©΄) νμ μ€ν¬λ¦½νΈλ νμ μλ¬λ₯Ό λ΄μ§ μλ λ°©ν₯μΌλ‘ νμ μ μΆλ‘ ν©λλ€. λ§μ½ ν¨μλ₯Ό μ μνκ³ λμ νΈμΆνλ©΄, νΈμΆνλ μμ μμλ Developerμ User λ μ€ μ΄λ€ νμ μ΄ μ¬ μ§ μ μ μμ΅λλ€. μ€μ λ‘ μ¬μ©νλ νμ κ³Ό λ€λ₯Έ κ²μΌλ‘ 미리 μΆλ‘ μ νλ©΄ μ λλ―λ‘, μ΅λν μλ¬λ₯Ό λ΄μ§ μλ λ°©λ² μ¦ μΈν°νμ΄μ€λ‘ μ μν λ νμ μ 곡ν΅μ μΌλ‘ λ€μ΄κ°λ νμ€ν μμ±λ§ μ κ·Όν μ μκ² λλ κ²μ λλ€.
2. μΈν°μΉμ νμ
κ·Έλ λ€λ©΄ μ λμ¨ νμ μΌλ‘ ν©μΉ λͺ¨λ νμ μ μ¬μ©ν μ μκ² νλ λ°©λ²μ μμκΉμ? λ°λ‘ μΈν°μΉμ νμ μ μ¬μ©νλ©΄ λ©λλ€.
λ νμ μ & μ°μ°μλ‘ μ°κ²°νλ©΄, μ°κ²°ν νμ λͺ¨λλ₯Ό λ§μ‘±νλ νλμ νμ μ΄ λλ κ²μ΄ μΈν°μΉμ νμ μ λλ€.
μΈν°μΉμ νμ μ μ°κ²°ν λͺ¨λ νμ μ λ§μ‘±νλ νλμ νμ μΌλ‘ ν©μΉλ κ²μ΄κΈ° λλ¬Έμ,
μμ μ λμ¨ νμ μμ λ°μν μ μλ μλ¬κ° μ¬λΌμ§κ² λ©λλ€. λͺ¨λ νμ μ λ§μ‘±νλκΉμ.
//2. μΈν°μΉμ
νμ
-> μ¬λ¬ κ°μ νμ
μ μλ₯Ό νλλ‘ ν©μΉλ κ²
interface Developer2 {
name: string,
skill: string
}
interface User2 {
name: string,
age: number
}
function showUserInfo2(someone: Developer2 & User2) {
console.log(someone.name);
console.log(someone.skill); //μλ¬ λ°μνμ§ μμ
console.log(someone.age); //μλ¬ λ°μνμ§ μμ
}
2-1. μΈν°μΉμ νμ μ£Όμν μ
λ€λ§ μΈν°μΉμ νμ μ ν©μΉ νμ μ΄ νμκ°μ΄ λμ΄λ²λ¦½λλ€. λ°λΌμ μμμ μ€λͺ ν μ½λμ²λΌ ν¨μμ parameter λΆλΆμ μΈν°μΉμ νμ μΌλ‘ μ μνκ³ ν¨μλ₯Ό νΈμΆν λ, μΈν°μΉμ νμ μΌλ‘ ν©μΉ μμ± λͺ¨λ μ¬μ©νμ§ μμΌλ©΄ μλ¬κ° λ°μν©λλ€. μ΄λ¬ν λ¨μ λλ¬Έμ μ€λ¬΄μμλ μ λμ¨ νμ μ μ’ λ λ§μ΄ μ¬μ©νλ€κ³ ν©λλ€.
interface Developer2 {
name: string,
skill: string
}
interface User2 {
name: string,
age: number
}
function showUserInfo2(someone: Developer2 & User2) {
console.log(someone.name);
console.log(someone.skill); //μλ¬ λ°μνμ§ μμ
console.log(someone.age); //μλ¬ λ°μνμ§ μμ
}
//2-1. μΈν°μΉμ
νμ
μ£Όμν μ
showUserInfo({name: 'νλ‘κ·Έλλ¨Έ', skill: 'νλ‘ νΈμλ'}); //μλ¬ λ°μ
showUserInfo({name: 'νλ‘κ·Έλλ¨Έ', age: 25}); //μλ¬ λ°μ
μΈνλ°μ μ λ£ κ°μ 'νμ μ€ν¬λ¦½νΈ μ λ¬Έ - κΈ°μ΄λΆν° μ€μ κΉμ§'λ₯Ό μκ°νκ³ μμ±νλ κΈμ λλ€.
νμ μ€ν¬λ¦½νΈ μ λ¬Έ - κΈ°μ΄λΆν° μ€μ κΉμ§ - μΈνλ° | κ°μ
νμ μ€ν¬λ¦½νΈλ₯Ό μμνλ λΆλ€μ μν κ°μμ λλ€. μ΅μ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ λͺ¨λ₯΄λ λΆλ€λ μ½κ² λ°°μΈ μ μλλ‘ κ΅κ³Ό κ³Όμ μ ꡬμ±νμμ΅λλ€. μ΄λ ΅κ²λ§ λκ»΄μ§λ νμ μ€ν¬λ¦½νΈλ₯Ό μ λ¬Έμ κ΄
www.inflearn.com
(κ°μ μ 곡μμ΄μ μΊ‘ν΄νκ΅ λμ νμ μ€ν¬λ¦½νΈ νΈλλΆλ κ°μ΄ μ°Έκ³ νλ©΄ μ’μ΅λλ€.π)
'π©βπ»κ°λ°_TIL > TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[HTML] μλ§¨ν± νκ·Έ (0) | 2022.01.20 |
---|---|
[HTML] 기본 ꡬ쑰 (0) | 2022.01.20 |
[νμ μ€ν¬λ¦½νΈ] μΈν°νμ΄μ€ (0) | 2022.01.14 |
[νμ μ€ν¬λ¦½νΈ] νμ μ€ν¬λ¦½νΈ νλ‘μ νΈ μμνλ λ°©λ² (0) | 2022.01.12 |
[νμ μ€ν¬λ¦½νΈ] νμ μ€ν¬λ¦½νΈλ₯Ό μ°λ μ΄μ (0) | 2022.01.11 |