π μ λμ¨ νμ : var seho : string | number | boolean;
var seho : string | number | boolean;
μ¬κΈ°μ | λ ORμ λ»νλ€.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Developer | Person ) {
someone.name;
}
askSomeone({ name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°'});
askSomeone({ name: 'μΊ‘ν΄', age: 100});
ν κ°μ§ μ΄μμ νμ μ μ¬μ©νκ³ μΆμ λ | (νμ΄ν)λ₯Ό μ¬μ©νλ©΄ λλ€. μ λμ¨ νμ μ Developerμ Personμ μΈν°νμ΄μ€λ₯Ό μμ±νμ λ λ λ€ κ³΅ν΅μΌλ‘ λ€μ΄κ° nameκ°λ§ λ½μλ΄μ€λ€. κ·Έ μ΄μ λ someoneμ ageλ skillμ΄ νμ κ²μ¦λ μμ΄ λ°λ‘ μ¨λ²λ¦¬κ² λλ©΄ μμ νμ§ μμ μ΄ μ½λμ μλ¬κ° λ μ μλ€κ³ νλ€. μ½κ² λ§ν΄ μΈν°νμ΄μ€ ꡬ쑰체μ 곡ν΅λ μμ±λ§ μ 곡νλ€κ³ 보면λλ€.
function askSomeone(someone: Developer | Person ) {
// someone.name;
// someone.skill;
// someone.age;
}
askSomeone({ name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°'});
askSomeone({ name: 'μΊ‘ν΄', age: 100});
λ€λ₯Έ νμ λ€μ μμ±μ λΆλ¬μ€κ³ μΆλ€λ©΄ μ΄λ κ² askSomeoneμ λ λ² νΈμΆν΄μ κ°κ° μ§μ ν΄μ£Όλ νμ μ μμ±λ€λ§ κ³¨λΌ νΈμΆν΄μ€ μ μλ€. (skill, age)
π μΈν°μΉμ νμ : var capt : string & number & boolean;
var capt : string & number & boolean;
&λ ANDλ₯Ό λ»νλ€.
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone1(someone: Developer & Person ) {
// μΈν°μΉμ
: Developer κ³Ό Personμ΄ ν©μΉ νλμ νμ
someone.name;
someone.skill;
someone.age;
}
askSomeone1({ name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°', age: 34});
μΈν°μΉμ μ Developer κ³Ό Personμ΄ ν©μΉ νλμ νμ μΌλ‘ ! 곡ν΅μΈ name λΏλ§ μλλΌ skillκ³Ό age μμ±λ κ°μ΄ μ 곡ν΄μ€λ€. κ·Έλμ νΈμΆν λ λ°λμ name, skill, ageλΌλ μμ± κ°λ€μ ν λ²μ ν μ€λ‘ μΆλ ₯ν΄μ£Όμ΄μΌ λΉ¨κ° μλ¬κ° λ°μνμ§ μλλ€.
μ λμ¨ νμ μ²λΌ
askSomeone1({ name: 'λ벨λ‘νΌ', skill: 'μΉ κ°λ°'});
askSomeone1({ name: 'μΊ‘ν΄', age: 100});
μ΄λ°μμΌλ‘ νΈμΆν΄μ£Όλ©΄ λΉ¨κ°μ€ μλ¬κ° μκΈ΄λ€.
π μ 리
μ λμ¨νμ κ°μ κ²½μ°μλ 곡ν΅λ νμ λ§ μ κ³΅μ΄ κ°λ₯νλ λ°λ©΄μ μΈν°μΉμ μ½λ κ°μ κ²½μ°μλ Developerμ Personμ΄ κ°μ§κ³ μλ λͺ¨λ μμ±κ³Ό νμ μ λ€ ν¬ν¨ν νλμ νμ μ΄λΌκ³ μ μνκΈ° λλ¬Έμ μλ¬κ° μλκ³ μ λΆ μ 곡ν΄μ€λ€. νμ§λ§ λ κ°μ§ μ€μμ μ λμ¨ νμ μ΄ ν¨μ¬ λ μμ£Ό μ°μΈλ€λ μ μ μ μνμ.