TypeScript λ?
Javascript λ₯Ό κΈ°λ°μΌλ‘ νμ¬ μ μ νμ λ¬Έλ²μ μΆκ°ν νλ‘κ·Έλλ° μΈμ΄
- JavaScript μ μμ μ§ν©μΌλ‘ Microsoft μμ κ°λ°νλ€.
- λ°λΌμ JavaScriptμ λͺ¨λ κΈ°λ₯μ TypeScript μμλ μ¬μ©ν μ μλ€.
- ES6 μ κ· λ¬Έλ²μ ν¬ν¨νκ³ ν΄λμ€, μΈν°νμ΄μ€, μμ, λͺ¨λ λ±μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° ν¨ν΄μ μ 곡νλ€.
- TypeScript μ»΄νμΌλ¬λ₯Ό μ¬μ©νμ¬ TypeScript(.ts) νμΌμ Javascript(.js) νμΌλ‘ λ³ννμ¬ μ€ννλ€.
TypeScript vs. JavaScript
π§ μλ, μμ μ±
μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄λ‘ λ°νμ μλλ λΉ λ₯΄μ§λ§, νμ μμ μ±μ 보μ₯λμ§ μλλ€.
νμ μ€ν¬λ¦½νΈλ μ μ νμ μΈμ΄λ‘ μ»΄νμΌ μκ°μ΄ κΈΈμ§λ§, μμ μ±μ΄ 보μ₯λλ€.
π§ μ€νλλ μμΉ
μλ°μ€ν¬λ¦½νΈλ ν΄λΌμ΄μΈνΈμμ μ€νλλ€.
νμ μ€ν¬λ¦½νΈλ ν΄λΌμ΄μΈνΈμ μλ² λ¨μμ μ€νλλ€.
π§ μμ€ λ²μ λ°©μ
μλ°μ€ν¬λ¦½νΈλ μΈν°νλ¦¬ν° μΈμ΄μ΄λ€.
νμ μ€ν¬λ¦½νΈλ μ»΄νμΌ μΈμ΄μ΄λ€.
νμ μ€ν¬λ¦½νΈλ λ€λ₯Έ μ»΄νμΌ μΈμ΄λμ λ°©μμ μ°¨μ΄κ° μμ΄ νΈλμ€νμΌ μΈμ΄λΌκ³ λΆλ₯΄κΈ°λ νλ€.
π§ μ»΄νμΌλ¬ νμ μ¬λΆ
μλ°μ€ν¬λ¦½νΈλ μΉ λΈλΌμ°μ μμ μ€νλλ©° λ³λμ μ»΄νμΌλ¬κ° νμνμ§ μλ€.
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈ νμΌλ‘ λ³νλμ΄ μ€νλμ΄μΌ νλ―λ‘ νμ μ€ν¬λ¦½νΈλ₯Ό μ»΄νμΌνλ μ»΄νμΌλ¬κ° νμνλ€.
π§ ν¨ν΄
μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ κΈ°λ°μ μΈμ΄μ΄λ€.
νμ μ€ν¬λ¦½νΈλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ΄λ©° ν΄λμ€, μμ, μΈν°νμ΄μ€ λ° μμ μλ₯Ό μ¬μ©ν μ μλ€.
μλ°μ€ν¬λ¦½νΈμμ ν΄λμ€μ κ°μ κΈ°λ₯μ νμ©νλ €λ©΄ ν¨μμ νλ‘ν νμ μ μ¬μ©ν΄ μ§μ μμ±ν΄μ£Όμ΄μΌ νμ§λ§ νμ μ€ν¬λ¦½νΈλ μ체μ μΌλ‘ μ§μνκ³ μλ€.
β νλ‘ν νμ (prototype)
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ²΄λ νλ‘ν νμ μ΄λΌλ κ°μ²΄λ₯Ό κ°μ§κ³ μμ΄ νλ‘νΌν°μ λ©μλλ₯Ό μμ λ°λλ€. κ°μ²΄ μμλ __proto__ μμ±μ΄ μκ³ μ΄λ μμ μ μν νλ‘ν νμ κ°μ²΄λ₯Ό μ°Έμ‘°νλ μ¨κ²¨μ§ λ§ν¬μ΄λ€.
π§ λ 립μ ? μμ‘΄μ ?
μλ°μ€ν¬λ¦½νΈλ λ 립μ μΌλ‘ μ¬μ©ν μ μλ€.
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈλ‘ μ»΄νμΌλ ν μ€ννλ―λ‘ μλ°μ€ν¬λ¦½νΈμ μμ‘΄μ μ΄λ€.
TypeScript νΉμ§
- νμ μ΄λ Έν μ΄μ μ μ΄μ©ν΄ λ³μμ νμ μ μ μΈνμ¬ μμ μ±μ ν보νλ€.
- ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό μ§μνμ¬ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° νκ²½μ μ 곡νλ€.
- μ»΄νμΌ κ³Όμ μμ ES6 μ΄μ λ¬Έλ²λ€μ ES5(or ES3)λ‘ λ°κΏμ£Όμ΄ ν¬λ‘μ€λΈλΌμ°μ§ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
β Babel
νμ μ€ν¬λ¦½νΈμμλ ES6 κΈ°λ₯λ€μ μ¬μ©νκΈ° μν΄ Babelκ³Ό κ°μ λ³λμ νΈλμ€νμΌλ¬λ₯Ό μ¬μ©νμ§ μμλ λλ€. λΈλΌμ°μ κ° μ΅μ λ²μ μ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ μ΄ν΄νμ§ λͺ»ν λ λΈλΌμ°μ κ° μ΄ν΄ν μ μλ λ¬Έλ²μΌλ‘ λ³νμμΌμ£Όλ νΈλμ€νμΌλ¬μ΄λ€.
TypeScript νμ μ§μ
λ³μλ₯Ό μ μΈν λ νμ μ μ§μ νμ¬ μ»΄νμΌ μμ μμ μλͺ»λ μ½λλ₯Ό μ‘μλΌ μ μλ€.
- μΌλ° λ³μ, λ§€κ° λ³μ, κ°μ²΄ μμ± λ±μ νμ μ μ§μ ν μ μλ€.
- νμ μ λͺ μνμ§ μμΌλ©΄ λͺ¨λ νμ μ΄ νμ©λλ€.
- νμ μ λμλ¬Έμλ₯Ό ꡬλΆνλ€.
- νμ μ λ³μ : νμ κ³Ό κ°μ ννλ‘ μ§μ νλ€.
λ³μ
- μ«μ(number)
let num: number = 5;
- λ¬Έμμ΄(string)
let str: string = 'hello';
- μ°Έ/κ±°μ§(boolean)
let isSomething: boolean = true;
- λ°°μ΄([], Array)
let arr1: number[] = [1, 2, 3];
let arr2: Array<number> = [4, 5, 6];
- κ°μ²΄({}, object)
let obj1: object = {name: 'anna', age: 15};
let obj2: {name: 'tom', age: 22};
- any : κΈ°μ‘΄ μλ°μ€ν¬λ¦½νΈμμ μ¬μ©νλ κ²κ³Ό μ μ¬νκ² μ무 νμ μ΄λ λ°μ
let anyNumber: any = 10;
let anyString: any = 'hello';
console.log(anyNumber.length); // undefined
console.log(anyString.length); // 5
- unknown : any νμ κ³Ό λμΌνκ² λͺ¨λ κ°μ νμ©νμ§λ§ ν λΉλ κ°μ΄ μ΄λ€ νμ μΈμ§ λͺ¨λ¦(μ΄ν μ°μ° λΆκ°)
let unknownNumber: unknown = 10;
let unknownString: unknown = 'hello';
console.log(unknownNumber.length); // Object is of type 'unknown'
console.log(unknownString.length); // Object is of type 'unknown'
if (typeof unknownString === 'string') {
console.log(unknownString.length); // νμ
μ²΄ν¬ νμ
}
ν¨μ
- μΈμμ λ°ν κ°
μμμμλ string νμ nameκ³Ό number νμ age μΈμ, number νμ λ°ννλ€.
function myFunc(name: string, age: number) : number {
// ...
}
- μ΅μ μΈμ
μλ΅ν μ μλ μΈμ λ€μ λ¬Όμνλ₯Ό λΆμ¬ μ΅μ μΈμλ‘ μ§μ νλ€.
function myFunc(name: string, age?: number) : number {
// age μΈμ μλ΅ κ°λ₯
}
- never
μ λ λ°μνμ§ μλ κ°μ νμ , μλ¬λ 무ν루νμμ μ¬μ©νλ€.
function myFunc(): never {
throw new Error('error!!!');
}
- void
μ΄λ€ κ°μ κ°μ§μ§ μλ νμ μ΄λ€.
function myFunc(): void {
console.log('μ무 κ²λ λ°ννμ§ μμ');
}
'κ°λ° > Javascript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Object.freeze κ°μ²΄ λκ²° / κ°μ²΄ μ½κΈ° μλ (0) | 2022.05.12 |
---|---|
ES6 Syntax (0) | 2022.05.03 |
μλ°μ€ν¬λ¦½νΈ λΉλκΈ° μ²λ¦¬ / Promise / async / await / fetch (0) | 2022.04.20 |
Promise ν¨ν΄ (0) | 2022.04.14 |
javascript ν¨μν νλ‘κ·Έλλ° (0) | 2022.02.06 |
λκΈ