TypeScript? π€
2012λ
λ§μ΄ν¬λ‘μννΈκ° λ°νν νμ
μ€ν¬λ¦½νΈ(TypeScript)λ
μλ°μ€ν¬λ¦½νΈ(JavaScript)λ₯Ό κΈ°λ°μΌλ‘ μ μ νμ
λ¬Έλ²μ μΆκ°ν νλ‘κ·Έλλ° μΈμ΄μ
λλ€.
νμ μ€ν¬λ¦½νΈμ νΉμ§
μ»΄νμΌ μΈμ΄, μ μ νμ μΈμ΄
μλ°μ€ν¬λ¦½νΈλ λμ νμ μ μΈν°νλ¦¬ν° μΈμ΄λ‘ λ°νμμμ μ€λ₯λ₯Ό λ°κ²¬ν μ μμ΅λλ€.
μ΄μ λ°ν΄ νμ μ€ν¬λ¦½νΈλ μ μ νμ μ μ»΄νμΌ μΈμ΄μ΄λ©° νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬ λλ λ°λ²¨(Babel)μ ν΅ν΄ μλ°μ€ν¬λ¦½νΈ μ½λλ‘ λ³νλ©λλ€.
μ½λ μμ± λ¨κ³μμ νμ μ 체ν¬ν΄ μ€λ₯λ₯Ό νμΈν μ μκ³ λ―Έλ¦¬ νμ μ κ²°μ νκΈ° λλ¬Έμ μ€ν μλκ° λ§€μ° λΉ λ₯΄λ€λ μ₯μ μ΄ μμ΅λλ€.
νμ§λ§ μ½λ μμ± μ λ§€λ² νμ μ κ²°μ ν΄μΌ νκΈ° λλ¬Έμ λ²κ±°λ‘κ³ μ½λλμ΄ μ¦κ°νλ©° μ»΄νμΌ μκ°μ΄ μ€λ κ±Έλ¦°λ€λ λ¨μ μ΄ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈ μνΌμ (Superset)
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ μνΌμ , μ¦ μλ°μ€ν¬λ¦½νΈ κΈ°λ³Έ λ¬Έλ²μ νμ μ€ν¬λ¦½νΈμ λ¬Έλ²μ μΆκ°ν μΈμ΄μ λλ€. λ°λΌμ μ ν¨ν μλ°μ€ν¬λ¦½νΈλ‘ μμ±ν μ½λλ νμ₯μλ₯Ό .jsμμ .tsλ‘ λ³κ²½νκ³ νμ μ€ν¬λ¦½νΈλ‘ μ»΄νμΌν΄ λ³νν μ μμ΅λλ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μ§μ
νμ μ€ν¬λ¦½νΈλ ES6(ECMAScript 6)μμ μλ‘κ² μ¬μ©λ λ¬Έλ²μ ν¬ν¨νκ³ μμΌλ©° ν΄λμ€, μΈν°νμ΄μ€, μμ, λͺ¨λ λ±κ³Ό κ°μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° ν¨ν΄μ μ 곡ν©λλ€.
μ»΄νμΌ λ¨κ³μμμ μλ¬ μ²΄ν¬
λμ μμ€μ μ½λ νμκ³Ό λλ²κΉ
νμ
μ€ν¬λ¦½νΈλ μ½λμ λͺ©μ μ λͺ
μνκ³ λͺ©μ μ λ§μ§ μλ νμ
μ λ³μλ ν¨μλ€μμ μλ¬λ₯Ό λ°μμμΌ λ²κ·Έλ₯Ό μ¬μ μ μ κ±°ν©λλ€. λν μ½λ μλμμ±μ΄λ μ€ν μ νΌλλ°±μ μ 곡νμ¬ μμ
κ³Ό λμμ λλ²κΉ
μ΄ κ°λ₯ν΄ μμ°μ±μ λμΌ μ μμ΅λλ€. μ€μ λ‘ ν μ°κ΅¬μ λ°λ₯΄λ©΄ λͺ¨λ μλ°μ€ν¬λ¦½νΈ λ²κ·Έμ 15%κ° μ¬μ μ νμ
μ€ν¬λ¦½νΈλ‘ κ°μ§ν μ μλ€κ³ ν©λλ€.
μλ°μ€ν¬λ¦½νΈ νΈν
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ 100% νΈνλ©λλ€. λ°λΌμ νλ‘ νΈμλ λλ λ°±μλ μ΄λλ μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν μ μλ κ³³μ΄λΌλ©΄ νμ μ€ν¬λ¦½νΈλ μΈ μ μμ΅λλ€. νμ μ€ν¬λ¦½νΈλ μ±κ³Ό μΉμ ꡬννλ μλ°μ€ν¬λ¦½νΈμ λμΌν μ©λλ‘ μ¬μ© κ°λ₯νλ©° μλ² λ¨μμ κ°λ°μ΄ μ΄λ£¨μ΄μ§λ 볡μ‘ν λν νλ‘μ νΈμμλ λΉμ λ°ν©λλ€.
Why typescript?
- μ½λμ λ²κ·Έ κ°μ
- λ°νμ μλ¬ κ°μ
- μμ°μ± ν₯μ
βοΈ μ€μ λ‘λ μ΄ν΄ν μ μμ§λ§, javascriptμμλ λΉμ°νκ² νμ©μ΄ λλ μμ
[Example 1]
Array + Booleanμ΄ Stringμ΄ λλ νμ (μ΄λ₯Ό κ°λ°μκ° μλνκ³ νλ€λ©΄ μΈμ , νμ§λ§ κ·Έλ° κ°λ°μκ° μλκ°..?π€)
[1,2,3,4] + false
-> '1,2,3,4false'
[Example 2]
ν΄λΉ μμ μμλ μ»΄ν¨ν°μ κ°λ°μκ° μν΅νλ κ³Όμ μμ μ»΄ν¨ν°λ aμ bκ° μ νν μ΄λ€ κ²μΈμ§ λͺ¨λ₯Έλ€.
λ°λΌμ μ¬μ©μκ° μ΄λ»κ² κ°μ 보λ΄λ μ»΄ν¨ν°λ μ΄λ₯Ό μ²λ¦¬ν΄μ€μΌνλ μν©μ΄ μκΈ°λ€λ³΄λ μΈμλ₯Ό 1κ°λ§ 보λ΄λ, μ«μκ° μλ λ¬Έμλ₯Ό 보λ΄λ νμ©ν΄μ£Όκ³ μλ μ΄μν νμμ΄ μΌμ΄λκ³ μλ€.
νμ§λ§ NaNμ΄λΌλ 리ν΄μ λ°κ³ μκ³ , μ½λμ μλ¬κ° μλ μ±λ‘ μ§νμ΄ λκΈ°μ νλ‘μ νΈκ° 컀μ§μλ‘ μ°λ¦¬λ μ΄λμ λ¬Έμ κ° λ°μνμ§ μκΈ° μ΄λ €μμ§λ€.
function divide(a, b) {
return a / b;
}
divide("abc");
-> NaN
[Example 3]
μ»΄νμΌ λ¨κ³μμ νμ
ν μ μκ³ , λ°νμ λ¨κ³μμ μλ¬κ° λλ μ΅μ
μ κ²½μ°λ₯Ό κ²½ν ν μ μλ€.
const obj = {
name: "kw",
sayHello: (name) => console.log(`hello ${name}`)
};
obj.sayHello(obj.name);
-> hello kw
obj.asyHello(obj.name);
-> VM137:2 Uncaught TypeError: obj.asyHello is not a function
at <anonymous>:2:7
π λ°λΌμ μ΄λ° νλμ΄ μ΄μνμ§ μλκ³ κ°λ°μμκ² javascriptκ° μλ €μ€ νμκ° μλ€.
[μΆμ²]
https://www.samsungsds.com/kr/insights/typescript.html
'Basic > TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
error TS18046: 'err' is of type 'unknown' μλ¬ ν΄κ²° (0) | 2023.05.12 |
---|---|
[Typescript] Type guard κ°λ λ° μμ (0) | 2023.03.19 |
Typescriptλ₯Ό μ΄μ©ν tree μν μ½λ (0) | 2022.07.26 |