íì ì€í¬ëŠœížë?
íì ì€í¬ëŠœíž(TypeScript, TS)ë ë§ìŽí¬ë¡ìííž(Microsoft)ìì ê°ë°íê³ , ìë°ì€í¬ëŠœížì íì ì ë¶ì¬í ìžìŽìŽë€.
ìë°ì€í¬ëŠœížì íì¥ë ìžìŽëŒê³ 볌 ì ìë€.
ìë°ì€í¬ëŠœížì ë¬ëЬ ëžëŒì°ì ìì ì€ííë €ë©Ž íìŒì í ë² ë³ííŽì€ìŒ íë€. (컎íìŒì íŽìŒ ì€í ê°ë¥)
ìë°ì€í¬ëŠœížë <script></script> íê·žë¡ ì§ì ìì±í멎 ëžëŒì°ì ê° ìŠì ì€íí ì ìë ìží°íëŠ¬í° ìžìŽì.
íì ì€í¬ëŠœížë ëžëŒì°ì ê° ë°ë¡ ì€íí ì ìê³ .ts íìŒì .js íìŒë¡ 컎íìŒ íŽìŒ íš. ìŽ ë³íë .js íìŒì ëžëŒì°ì ìì ì€ííë ë°©ìì.
JavaScriptì TypeScriptì ì€í ë°©ì ì°šìŽì
ìžìŽ | ì€í ë°©ì | ëžëŒì°ì ìì ë°ë¡ ì€í ê°ë¥íê°? |
JavaScript | ìží°íëŠ¬í° ë°©ì | ê°ë¥ |
TypeScript | 컎íìŒ í ì€í | ì§ì ì€í ë¶ê°ë¥ |
ìží°íëŠ¬í° ìžìŽì 컎íìŒë¬ ìžìŽì ì°šìŽì
êµ¬ë¶ | ìží°íëŠ¬í° ìžìŽ | 컎íìŒë¬ ìžìŽ |
ì€í ë°©ì | í ì€ì© íŽì & ì€í | ì 첎 ìœë륌 ë²ì í ì€í |
ì€í ìë | ìëì ìŒë¡ ë늌 | ë¹ ëŠ |
ì€í 곌ì | ì€íí ëë§ë€ ë²ì | í ë² ì»ŽíìŒí멎 ì€í ê°ë¥ |
ìžìŽ ì¢ ë¥ | JavaScript, Python, PHP | C, C++, Java |
ì íìíê°? (íì ì€í¬ëŠœížì ì¥ì )
- íì
ìì ì± (Type Safety)
- ìœë ìì± ì€ì íì ì€ë¥ë¥Œ ì¬ì ì ì¡ìì€ì, ë°íì ìë¬ë¥Œ ì€ìŒ ì ìì.
- ì륌 ë€ìŽ, number íì ë³ìì stringì í ë¹í멎 컎íìŒ ëšê³ìì ì€ë¥ ë°ì.
- ê°ë
ì±ê³Œ ì ì§ë³Žìì± í¥ì
- ìœëì êµ¬ì¡°ê° ëª ííŽì§ê³ , íì ì 볎 ëë¶ì íì ê° íì ìŽ ì¬ìì§.
- í¹í ê·ëªšê° í° íë¡ì ížìì íšê³Œì
- IDE ì§ì & ìë ìì± ê°í
- VS Code ê°ì IDEìì ìë ìì±(IntelliSense), ë¹ ë¥ž ì€ë¥ ê°ì§, ìœë ëŽë¹ê²ìŽì ë±ì ì§ìíŽì€ì ê°ë° ìëê° í¥ìëš.
- ê°ì²Žì§í¥ íë¡ê·žëë°(OOP) ì§ì
- interface, class, enum, abstract class ë± OOP ê°ë ì íì©í ì ììŽì ë 첎ê³ì ìž ìœë ìì± ê°ë¥.
- ìµì ìë°ì€í¬ëŠœíž êž°ë¥ ì§ì
- ES6+, ES7 ë±ì ìµì ìë°ì€í¬ëŠœíž êž°ë¥ì í¬íšíê³ ììŽ ìµì 묞ë²ì ì¬ì©í ì ìì.
- ëí, 구ë²ì ëžëŒì°ì ììë ì¬ì©í ì ìëë¡ ì»ŽíìŒ ê°ë¥.
ìë°ì€í¬ëŠœížì íì ì€í¬ëŠœížì ì°šìŽì
íì ìì€í | ëì íì (Dynamic Typing) | ì ì íì (Static Typing) |
ë°íì ìë¬ | ì€í ì€ ì€ë¥ ë°ê²¬ | 컎íìŒ ëšê³ìì ì€ë¥ ê°ì§ |
ìœë ê°ë ì± | íì ì 볎 ë¶ì¡± | íì ìŽ ëª ííì¬ ì ì§ë³Žì ì©ìŽ |
ìë ìì± ì§ì | IDE ì§ì ìœíš | ê°ë ¥í ìë ìì±(IntelliSense) |
ê°ì²Žì§í¥(OOP) | ì íì (ES6 íŽëì€ ì§ì) | interface, class, abstract, enum ë± ìì í OOP ì§ì |
ížëì€íìŒë§ | íì ìì (ë°ë¡ ì€í ê°ë¥) | TS → JS ë³í(컎íìŒ íì) |
ìì ìœë ë¹êµ
ìë°ì€í¬ëŠœíž (JS)
function add(a, b) {
return a + b; // aì bê° ì«ìê° ìë ìë ìì
}
console.log(add(5, "10")); // 결곌: "510" (ìì곌 ë€ëŠ)
→ ì«ìëŒëЬ ëíŽìŒ íëë°, "10"(묞ììŽ)ìŽ ë€ìŽìì 묞ììŽ ì°ê²°ìŽ ë°ìíë 묞ì ê° ìê¹.
íì ì€í¬ëŠœíž (TS)
function add(a: number, b: number): number {
return a + b; // íì
ìŽ ë§ì§ ììŒë©Ž 컎íìŒ ëšê³ìì ì€ë¥ ë°ì
}
console.log(add(5, "10")); // ì€ë¥ ë°ì (Argument of type 'string' is not assignable to parameter of type 'number')
Why TypeScript? | íì ì€í¬ëŠœíž ížëë¶
Why TypeScript? | íì ì€í¬ëŠœíž ížëë¶
íì ì€í¬ëŠœížë? íì ì€í¬ëŠœížë ìë°ì€í¬ëŠœížì íì ì ë¶ì¬í ìžìŽì ëë€. ìë°ì€í¬ëŠœížì íì¥ë ìžìŽëŒê³ 볌 ì ììµëë€. íì ì€í¬ëŠœížë ìë°ì€í¬ëŠœížì ë¬ëЬ ëžëŒì°ì ìì ì€ííë €ë©Ž
joshua1988.github.io