A Language building up on javaScript
Adds new Features + Advantages to javascript (μλ‘μ΄ κ²μ΄ μλλ€)
const add = (num1, num2) => num1 + num2;
console.log(add('1','2'));
add('1','2') Unwanted Behavior at Runtime
result 23
Mitigation Stategies
Add if check to add fuction Validate & sanitize user input
const button = document.querySelector("button");
const input1 = document.querySelector("num1");
const input2 = document.querySelector("num2");
const add = (num1, num2) => num1 + num2;
button.addEventListener('click', () => consle.log(input1.value, input2.value));
this is not a technical error
it's not an error which is thrown but it's a logical error
the value of an input element is always a number
using typescript
compiler error
μ¬κΈ°μ !λ μ λ nullμ΄ μ€μ§ μλλ€λ λ»μ΄λ€.
νμ
μ€ν¬λ¦½νΈλ₯Ό μΆκ°νλκ²μ typeκ³Ό dataκ° λ§€μ° μ€μνλ€.
μ₯μ
μ€λ₯ λ°©μ§(μκΈ°μΉ μμ μν©μ νΌν μ μλ€.)
μ΄λ»κ² μλνλμ§ λͺ
μμ μΌλ‘ μ§μ
μ»΄νμΌνμ¬ μ΄μ λ²μ μ λΈλΌμ°μ λ μ§μνλ€.(Next-gen JavaScript)
Non-javaScript Features like Interfaces or Generics
Meta-Programming Features like Decorators
Rich Configuration Options
Modern Tooling that helps even in non-TypeScript Projects
lite server
typeScript's type system only helps you during development.
λΈλΌμ°μ λ μ§μν΄μ£Όμ§ μλλ€.
JavaScript uses "dynamic types" (resolved at runtime), TypeScript uses "static types" (set during development).
nicknameμ μ€μ νμ§ μμ μνμμ nicknameμ νμΈνκ³ μ νλ€λ©΄ κ°λ°νκ²½μμ νμ
μ€ν¬λ¦½νΈκ° μ€λ₯λ₯Ό μλ €μ€λ€.
Property 'nickname' does not exist on type '{ name: string; age: number; }'.
6 console.log(person.nickname);
toLocaleUpperCaseλ₯Ό μΌμλλ λ¬Έμ κ° μλ€.
mapμ Array λ©μλκΈ° λλ¬Έμ νμ
μ€ν¬λ¦½νΈκ° μλ¬λ₯Ό λΏλΏν΄μ€λ€.
jsμμ μμκ΄λ¦¬λ₯Ό ν λλ constμ λλ¬Έμ λ³μλͺ
μ μ΄μ©νμ¬ νμλ€.
enumμ μ΄κ±°νμΌλ‘ μ½κ² ν μ μλ€.
typescriptλ‘ λ°κΎΌλ€λ©΄
enum Role { ADMIN, READ_ONLY, AUTHOR }; μ΄λ κ² μ¬μ©ν μ μλ€. λ°°μ΄μ²λΌ 0, 1, 2μ ν΄λΉλλ€.
λ³νν νμΌμμ νμΈν μ μλ€.
μλ₯Ό λ³κ²½ν μ μλ μ«μλ λκ³ ν
μ€νΈλ λλ€.
μ΅λν μ°λ κ²μ νΌνμ
λͺ
μμ μΌλ‘ νμ
μ λνλ΄μ§ μκ³ μ μΆλ₯Ό ν΅νλ€λ©΄ νμ
μ€ν¬λ¦½νΈ μ₯μ x
| μ μ΄μ©νμ¬ νμ
μ μ§μ ν μ μλ€.
typeμ μ΄μ©νμ¬ μλ¨μ μ§μ ν μ μλ€.
Function Return Types and Void
parameter λ§€κ°λ³μ μμ : λ₯Ό μ΄μ©νμ¬ returnκ°μ νμ
μ μ μν΄μ€λ€.
returnκ°μ΄ μμ λλ, return;λ§ ν λ voidλ‘ μ μνλ€.
undefined μΈ κ²½μ°μ μλ κΉ?
return; μ΄λ° μν©μ λ§ν μ μλ€. νμ§λ§ void λ‘ μ΄λ€.
λ³μμ νμ
μ ν¨μλ‘ μ§μ ν λ functionμ΄λΌκ³ νμ§ μλλ€. (a: number, b: number) => number; μΌλ‘ μ§μ νλ€.
Function Types and Callbacks
μΈμμ λν μ μλ λ§€κ°λ³μμμ νλ€. μμ¬μ΄ λ€μ΄ νμΈνλ λ°©λ²μ addν¨μλ₯Ό νΈμΆ ν λ λ§μ°μ€λ₯Ό μ¬λ €λ³΄λ©΄ νμ
μ΄ μ§μ λμ΄ μλ€.
The Unknown Type
μ΄λ κ² νλ©΄ λ°νμ μλ¬κ° λλ€. unknownλ‘ μ€μ ν건 stringμ ν λΉν μ μλ€.
κ·Έλ λ€λ©΄ anyλ?
λ¬Έμ μλ€. anyλ‘ μ€μ νλ κ²μ μλ°μ€ν¬λ¦½νΈμ²λΌ μ μ°νκ² μ°κ² λ€λ λ»μ΄κ³ κΈ°λ³Έμ μΌλ‘ νμ
κ²μ¬λ₯Ό λΉνμ±ννκ³ νμ
μ€ν¬λ¦½νΈλ₯Ό μ°λ κ²μ ν¬κΈ°νκ² λ€ λ λ»μ΄λ€.
userInputμ ν λΉνλ λ²
extra checkλ₯Ό μΆκ°νλ€.
ν¨μμμ μ λ returnμ΄ μμ λ μ¬μ©νλ€.
generateErrorμ λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ voidκ° λ¨μ§λ§ ν¨μ¬ λͺ
ννλ€.