π νμ λ¨μΈ μμ보기
var a;
μ΄λ κ²λ§ μ μΈν aμ λν νμ μ anyκ° λκ³
a = 20;
μ΄λ κ² μ«μλ‘ λμ ν aλ μ«μλ‘ μΆλ‘ μ΄ λλ€.
a = 'a';
μλ λ¬Έμμ΄λ‘ μΆλ‘ μ΄ λλ€.
var b = a;
μλ μλκ°μΌλ©΄ 맨 μ²μμ μ μΈλ anyκ° bμ ν λΉλλ€.
var b = a as string;
μ΄λ κ² as ν€μλλ₯Ό μ¬μ©νμ¬ νμ νμ μ μ μΈνλ©΄ μ μΈ ν νμ (string)μΌλ‘ μ§μ λλ€. μ΄μ²λΌ νμ λ¨μΈμ νμ μ€ν¬λ¦½νΈλ³΄λ€ κ°λ°μκ° νμ μ λ μ μκ³ μλ€λΌλ μλ―Έλ‘ νμ μ€ν¬λ¦½νΈ λλ μ κ²½μ°μ§ λ§κ³ λ΄κ° μ ν νμ μ κ°μ£ΌνλΌ... μλ° λλμΌλ‘ λ°μλ€μ΄λ©΄ λλ€.
π DOM API μ‘°μ
<div id="app">hi</div>
var div = document.querySelector('div');
if (div) {
div.innerText
}
μΉνμ΄μ§μ νκ·Έλ₯Ό μ‘°μν΄μ€ λ κ°μ₯ λ§μ΄ μ¬μ©νλ APIλ querySelectorμ΄λ€. κ·Έλ¦¬κ³ μ μ½λμ²λΌ DIVλΌλ λ³μμ λ΄μ νκ·Έμ μ κ·Όνλ©΄ μμμ HTMLElementλΌκ³ μΆλ‘ ν΄μ€λ€. κ·Έλ¦¬κ³ ifλ¬ΈμΌλ‘ divκ° μλμ§ νμΈμ νκ³ κ·Έ λ€μμ μ‘°μμ ν΄μ£Όλκ² μΌλ°μ μΈ νμ λ¨μΈμ ν¨ν΄μ΄λ€. divλΌλ κ°μ΄ nullμΌ μλ μκΈ° λλ¬Έμ λ°μ νΈμΆλ divκ° μ΄λ€ κ±Έ λ°λ €μ€λμ§ divκ° μλμ§λ₯Ό ifλ¬Έμ ν΅ν΄ νμΈν΄λ³΄λ κ²μ΄λ€.
κ·Έλμ μ΄λ,
var div = document.querySelector('div') as HTMLDivElement;
div.innerText;
μ΄λ κ² asλΌλ ν€μλλ₯Ό μ¬μ©νμ¬ λ―Έλ¦¬ HTMLElementλ‘ νμ μ λ¨μΈν΄μ£Όλ κ²μ΄λ€. asλ₯Ό μ°λ μμ μλ μ½λκ° λμκ° λ querySelectorκ° HTMLElementλΌκ³ λ¨μΈν΄μ€λ€.
π νμ κ°λ μμ보기
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function introduce(): Developer | Person {
return { name: 'Tony', age: 33, skill: 'Iron Making'}
}
var Tony = introduce();
console.log(Tony.name);
if ((Tony as Developer).skill) {
var skill = ((Tony as Developer).skill);
console.log(skill);
} else if ((Tony as Person).age) {
var age = (Tony as Person).age;
console.log(age);
}
μΈν°νμ΄μ€ μ μΈν΄μ£Όκ³ , introduceλΌλ ν¨μμ μ λμ¨ νμ μΌλ‘ μμ±νμ¬ Tonyλ₯Ό νΈμΆν΄μ€¬λ€. κ·Έλ¦¬κ³ ifλ¬Έμ μ¬μ©νμ¬ νμ λ¨μΈ λ°©μμΌλ‘ asλ₯Ό μ¨κ°λ©° νμ μ΄ μλ μλ νμΈνλ κ³Όμ μ΄λ€. 첫 μ€μλ Tony as Developerλ₯Ό μ¬μ©νμ¬ λ벨λ‘νΌμ skillμ΄ μλ μλ νμΈμ ν νμ μμΌλ©΄ λ skillμ΄λΌλ κ²μ νΈμΆν΄μ£Όλλ‘ λ³μμ λ΄λ μ΄ κ³Όμ μ λ°λ³΅ν΄μ λ§λ€μλ€. μ΄λ κ² νλ©΄ κ°λ μ±λ λ¨μ΄μ§κ³ μ¬λ¬λ² μ μΈν΄μΌ λλ€λ λΆνΈν μ μ΄ μμ΄ μ΄κ²μ 보μν κ²μ΄ νμ κ°λμ΄λ€.
π νμ κ°λ μ μ
function isDeveloper(target: Developer | Person): target is Developer {
return (target as Developer).skill !== undefined;
}
if (isDeveloper(Tony)) {
console.log(Tony.skill)
} else {
console.log(Tony.age)
νμ κ°λ ν¨μλ isλΌλ ν¨ν΄κ³Ό targetμ΄λΌλ ν€μλλ₯Ό μ¬μ©νλ€. κ·Έλ¦¬κ³ skillμ΄λΌλ κ°μ΄ μμ λ !== undefined ν¨μλ₯Ό μ¬μ©νλ€. ifλ¬Έμ ν λκ° Developerμ΄λ©΄ μ€ν¬μ μ 곡ν΄μ€λ€. κ·Έλ μ§ μμΌλ©΄ ν λλ PersonμΌλ‘ μΈμνμ¬ ageλ₯Ό μ 곡ν΄μ€λ€. ifλ¬Έ 첫 μ€μλ developerκ° ν λμ΄κ³ , λ°μμ€μ PersonμΌλ‘μμ ν λμ΄κΈ° λλ¬Έμ κ°κ°μ νμν μμ±μ μ κ·Όν μ μλ€.