설명
특징
TypeScript = JavaScript + Type System
// JS
function add( num1, num2 ) {
return num1 + num2;
}
console.log(add('1', '2')); // 12
// TS
function add( num1: number, num2: number ): number {
return num1 + num2;
}
console.log(add('1', '2')); // compile error
*Argument of type '"1"' is not assignable to parameter of type 'number'
JavaScript built-in types
// Dynamic types
let myVar = ?
= 10
= true
= 'TS'
...
// 일반적인 JS 변수는 다양한 즉, 모든 타입의 데이터가 담길 수 있다.
// 이는 JS가 Interpreter를 이용한 라인단위의 번역을 실행하기 때문이다.
일반적으로 JS 변수는 다양한 즉, 모든 타입의 데이터가 담길 수 있다.
이는 JS가 Interpreter를 이용한 라인 단위의 번역을 실행하기 때문에 가능하다.
이런 형태 때문에 보통 JS에 대한 데이터 타입은 Dynamic Typed라고 이야기 한다.
→ TS는 Dynamic 데이터 타입을 기본으로 하고 있는 JS에 정적 타입을 적용할 수 있다.
let year: number = 2020;
// number : Type Annotation
function sumNumbers( firstNumber: **number**, secondNumber: **number** ): **number** {
return firstNumber + secondNumber;
}
// **number : Parameter Annotation
// number : Result Type Annotation**
let name = 'Kim'; // let name: string
let age = 20; // let age: number
let name;
name = 'Kim'; // let name: any
*Variable 'name' implicitly has an 'any' type, but a better type may be inferred from usage. ts(7043)
let age;
age = 20; // let age: any
→ any type으로 지정된 변수는 TS 컴파일 시점에 해당 변수에 대한 타입 검사를 수행하지 않는다.