π TypeScript/κ°λ
[μ½λ©μ ν] νμ μ€ν¬λ¦½νΈμμμ class : constructor, prototype νμ μ§μ
νμ μ€ν¬λ¦½νΈμμ classμ constructor μ¬μ©νκΈ° μΌλ°μ μΈ JavaScript ν΄λμ€ λ° κ°μ²΄ μμ±μ μμμ΄λ€. // JavaScript class Candidate { constructor(personality, age, gender) { this.personality = personality; this.age = age; this.gender = gender; } } const candidate1 = new Candidate('good', 28, 'woman'); JavaScriptμμλ νμ μ 보λ₯Ό λͺ μμ μΌλ‘ μ μΈνμ§ μλλ€. κ·Έλ κ² λλ¬Έμ μμ²λΌλ§ νκΈ°ν΄λ λμ§λ§, νμ μ€ν¬λ¦½νΈμμλ κ° μμ±κ³Ό 맀κ°λ³μμ νμ μ§μ μ ν΄μ£Όμ΄μΌ νλ€. // TypeScript class Candidate { ..
[μ½λ©μ ν] νμ μ€ν¬λ¦½νΈ HTML μ‘°μμ μ£Όμμ (2) : λ narrowingνκΈ°
μ°μ .. { "compilerOptions": { ... "strictNullChecks": true, ... }, } tsconfig.json νμΌμμ strictNullCheck μ΅μ μ trueλ‘ λ°κΎΌλ€. (νΉμ "strict" : trueλ‘ μ¨λ¬λ λλ€) μ΄λ κ² μ€μ νλ©΄ TypeScript μ»΄νμΌλ¬λ λ μ격ν κ·μΉμ μ μ©νλ©°, λ³μμ λν null 체ν¬κ° κ°μ λλ€. href μ‘°μμ μ€λ₯ let link = document.querySelector('#link'); if(link instanceof HTMLElement){ link.href = 'https://kakao.com'; } HTMLElement νμ μ href μμ±μ΄ μλ€λ μ€λ₯κ° λ¬λ€. λ§ν¬νκ·Έμ κ²½μ°μλ μ’λ μ’κ² narrowingν΄..
[μ½λ©μ ν] νμ μ€ν¬λ¦½νΈ HTML μ‘°μμ μ£Όμμ (1)
μ°μ .. { "compilerOptions": { ... "strictNullChecks": true, ... }, } tsconfig.json νμΌμμ strictNullCheck μ΅μ μ trueλ‘ λ°κΎΌλ€. (νΉμ "strict" : trueλ‘ μ¨λ¬λ λλ€) μ΄λ κ² μ€μ νλ©΄ TypeScript μ»΄νμΌλ¬λ λ μ격ν κ·μΉμ μ μ©νλ©°, λ³μμ λν null 체ν¬κ° κ°μ λλ€. HTML μ‘°μμ μ€λ₯ let title = document.querySelector('#title'); title.innerHTML = 'μλ νμΈμ'; // title is possibly Element | null TypeScriptμμ strictNullChecks μ΅μ μ΄ νμ±νλ κ²½μ°, μ λ©μλμ λ°ν νμ μ Element | ..
[μ½λ©μ ν] ν¨μμ object λ©μλμ type alias μ§μ νκΈ°
ν¨μ type alias ν¨μ νμ λ type aliasλ‘ μ μ₯ν΄μ μΈ μ μλ€. type NumOut = (x : number, y : number ) => number let ABC :NumOut = function(x,y){ return x + y } function ν€μλμλ νλΌλ―Έν° λ΄λΆλ {} λ°λ‘ μΌμͺ½μλ§ νμ μ§μ μ΄ κ°λ₯νκΈ° λλ¬Έμ function ν¨μμ΄λ¦ :NumOut (){} ννλ μ¬μ©ν μ μμ΄μ μ μ½λμ²λΌ μ¬μ©νλ€. *** μ£Όμμ¬ν : ν¨μ type aliasλ₯Ό λΆμ°©νλ €λ©΄ ν¨μννμμΌλ‘ μ¨μΌ νλ€. object λ©μλ type alias type Member = { name : string, age : number, plusOne : ( x :number ) => number, c..
[μ½λ©μ ν] νμ μ νΉμ κ°μΌλ‘ μ§μ νμ : Literal Types (+ as const)
Literal Types νμ μ§μ μ λμ± strictνκ² νΉμ κΈμλ μ«μλ§ κ°μ§ μ μκ² μ νμ λ μ μλ€. // λ¬Έμμ΄ λ¦¬ν°λ΄ νμ μ μ¬μ©ν νλΌλ―Έν° function greet(name: "Alice" | "Bob"): "Hello, Alice!" | "Hello, Bob!" { return `Hello, ${name}!`; } // μ«μ 리ν°λ΄ νμ μ μ¬μ©ν νλΌλ―Έν° function multiply(a: 2 | 3, b: 2 | 3): 6 { return a * b; } // λΆλ¦¬μΈ 리ν°λ΄ νμ μ μ¬μ©ν 리ν΄κ° function isAdmin(userType: "admin" | "regular"): boolean { return userType === "admin"; } // μ¬μ© μμ consol..
[μ½λ©μ ν] νμ μ λ³μμ λ΄μ : type alias
type alias νμ μ λ³μμ λ΄μ μ μλ€. type aliasλ μλ¬Έ λλ¬Έμλ‘ μμνλ κ·μΉμ΄ μλ€. type Name = string | number; let μ΄λ¦ :Name = 'kim'; type MyObject = { name? : string, age : number } let μ² μ :MyObject = { name : 'kim', age : 50 } Object λ³κ²½ μλ¬λμ°κΈ° type MyObject = { readonly name : string, } let μ² μ :MyObject = { name : 'kim', } μ² μ.name = 'Park'; // μλ¬ constλ λ³μ μ¬ν λΉμ΄ λΆκ°λ₯νμ§λ§, objectμ λ΄λΆ μμ±μ λ³κ²½ν μ μλ€. νμ μ€ν¬λ¦½νΈμμλ μ΄κ²μ μλ¬λ₯Ό λμΈ μ..