μ΄λ² μ₯μμλ TypeScriptμ νμ μΆλ‘ μ λ€λ£¨κ² μ΅λλ€. μ¦ νμ μ΄ μ΄λμμ, μ΄λ»κ² μΆλ‘ λλμ§ μ΄μΌκΈ°ν΄λ³΄κ² μ΅λλ€.
TypeScriptμμλ νμ νκΈ°κ° μλ κ²½μ° νμ μ 보λ₯Ό μ 곡νκΈ° μν΄ νμ μ μΆλ‘ ν©λλ€. μλ₯Ό λ€μ΄, μ΄ μ½λμμ
let x = 3;λ³μ x μ νμ
μ numberλ‘ μΆλ‘ λ©λλ€.
μ΄λ¬ν μΆλ‘ μ λ³μμ λ©€λ²λ₯Ό μ΄κΈ°ννκ³ , λ§€κ°λ³μμ κΈ°λ³Έκ°λ₯Ό μ€μ νλ©°, ν¨μμ λ°ν νμ
μ κ²°μ ν λ λ°μν©λλ€.
λλΆλΆμ κ²½μ°μ νμ μΆλ‘ μ μ§κ΄μ μ λλ€. νμ μ μΆλ‘ νλ λ°©λ²μ λν΄ μ’ λ μμΈν μμλ³΄κ² μ΅λλ€.
μ¬λ¬ ννμμμ νμ μΆλ‘ μ΄ λ°μν λ, ν΄λΉ ννμμ νμ μ μ¬μ©νμ¬ "μ΅μ κ³΅ν΅ νμ "μ κ³μ°ν©λλ€. μλ₯Ό λ€μ΄,
let x = [0, 1, null];μ μμ μ x νμ
μ μΆλ‘ νλ €λ©΄ κ° λ°°μ΄ μμλ€μ νμ
μ κ³ λ €ν΄μΌ ν©λλ€.
μ¬κΈ°μ λ°°μ΄μ νμ
μΌλ‘ κ³ λ₯Ό μ μλ λ κ°μ§ νλ³΄κ° μμ΅λλ€: numberμ nullμ
λλ€.
μ΅μ κ³΅ν΅ νμ
μκ³ λ¦¬μ¦μ κ° ν보 νμ
μ κ³ λ €νμ¬ λͺ¨λ ν보 νμ
μ ν¬ν¨ν μ μλ νμ
μ μ νν©λλ€.
ν보 νμ λ€λ‘λΆν° μ΅μ κ³΅ν΅ νμ μ μ ννκΈ° λλ¬Έμ, λͺ¨λ ν보 νμ μ ν¬ν¨ν μ μλ μμ νμ μ΄ μ‘΄μ¬ν΄λ ν보 νμ μ€ μμ νμ μ΄ μ‘΄μ¬νμ§ μμΌλ©΄ μ νν μ μμ΅λλ€. μλ₯Ό λ€μ΄:
let zoo = [new Rhino(), new Elephant(), new Snake()];μ΄μμ μΌλ‘λ zoo λ³μκ° Animal[] νμ
μΌλ‘ μΆλ‘ λκΈΈ μνμ§λ§, λ°°μ΄ μ€ Animal νμ
μ κ°μ²΄κ° μκΈ° λλ¬Έμ Animalμ λ°°μ΄ μμ νμ
μΌλ‘ μΆλ‘ νμ§ μμ΅λλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ λͺ¨λ ν보 νμ
μ ν¬ν¨νλ μμ νμ
μ νκΈ°ν΄μΌ ν©λλ€.
let zoo: Animal[] = [new Rhino(), new Elephant(), new Snake()];μ΅μ κ³΅ν΅ νμ
μ΄ μ‘΄μ¬νμ§ μλ κ²½μ°, μΆλ‘ μ κ²°κ³Όλ (Rhino | Elephant | Snake)[]κ³Ό κ°μ μ λμΈ λ°°μ΄ νμ
μ
λλ€.
TypeScriptμμλ κ²½μ°μ λ°λΌ "λ€λ₯Έ λ°©ν₯"μμλ νμ μ μΆλ‘ ν©λλ€. μ΄λ₯Ό "λ¬Έλ§₯μ νμ΄ν" μ΄λΌκ³ ν©λλ€. λ¬Έλ§₯μ νμ΄νμ ννμμ νμ μ΄ ν΄λΉ μμΉμ μν΄ μμλ λ λ°μν©λλ€. μλ₯Ό λ€λ©΄:
window.onmousedown = function(mouseEvent) {
console.log(mouseEvent.button); //<- μ±κ³΅
console.log(mouseEvent.kangaroo); //<- μ€λ₯!
};μ¬κΈ°μμ TypeScript νμ
κ²μ¬λ Window.onmousedown ν¨μ νμ
μ μ¬μ©νμ¬ ν λΉ μ€λ₯Έμͺ½μ ν¨μ ννμμ νμ
μ μΆλ‘ ν©λλ€.
μ΄λ κ² νμ λ mouseEvent λ§€κ°λ³μμ νμ
μ΄ button νλ‘νΌν°λ μμ§λ§, kangaroo νλ‘νΌν°λ μμμ μΆλ‘ ν μ μμ΅λλ€.
TypeScriptλ λ€λ₯Έ λ¬Έλ§₯μμλ νμ μΆλ‘ μ μν΄λ λλ€.
window.onscroll = function(uiEvent) {
console.log(uiEvent.button); //<- μ€λ₯!
}μ ν¨μκ° Window.onscrollμ ν λΉλμ΄ μλ€λ μ¬μ€μ κΈ°λ°μΌλ‘, TypeScriptλ uiEventκ° μ΄μ μμ μ MouseEventκ° μλ UIEvent μμ μκ³ μμ΅λλ€. UIEvent κ°μ²΄μλ button νλ‘νΌν°κ° μμ΄μ TypeScriptκ° μ€λ₯λ₯Ό λ°μμν΅λλ€.
λ§μ½ μ΄ ν¨μκ° λ¬Έλ§₯μ μΌλ‘ νμ
μ΄ μΆλ‘ λμ§ μλ μμΉμ μλ€λ©΄, ν¨μμ μΈμλ μ묡μ μΌλ‘ any νμ
μ κ°μ§λ©° λ³λμ μ€λ₯λ₯Ό λ³΄κ³ νμ§ μμ΅λλ€. (--noImplicitAny μ΅μ
μ μ¬μ©νμ§ μλλ€λ©΄)
const handler = function(uiEvent) {
console.log(uiEvent.button); //<- μ±κ³΅
}μ°λ¦¬λ ν¨μμ μΈμ νμ μ any νμ νκΈ°νμ¬ μ¬μ μν μ μμ΅λλ€.
window.onscroll = function(uiEvent: any) {
console.log(uiEvent.button); //<- μ΄μ μ€λ₯κ° λ°μνμ§ μμ
};νμ§λ§ uiEventλ button νλ‘νΌν°κ° μκΈ° λλ¬Έμ μ΄ μ½λλ undefinedμ μΆλ ₯ν©λλ€.
λ¬Έλ§₯μ νμ΄νμ λ§μ κ²½μ°μ μ μ©λ©λλ€. μΌλ°μ μΈ κ²½μ°, ν¨μ νΈμΆ μΈμ, ν λΉμ μ€λ₯Έμͺ½, νμ λ¨μΈ, κ°μ²΄ / λ°°μ΄ λ¦¬ν°λ΄μ λ©€λ², λ°νλ¬Έμ΄ μμ΅λλ€. λ¬Έλ§₯μ νμ μ μ΅μ κ³΅ν΅ νμ μ ν보 νμ μΌλ‘λ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄:
function createZoo(): Animal[] {
return [new Rhino(), new Elephant(), new Snake()];
}μ΄ μμ μμ μ΅μ κ³΅ν΅ νμ
μ 4κ°μ§ ν보 νμ
μ κ°μ§λλ€: Animal, Rhino, Elephant, and Snake.
μ΄λ€ μ€, Animalμ΄ μ΅μ κ³΅ν΅ νμ
μκ³ λ¦¬μ¦μ μν΄ μ νλ©λλ€.