타입스크립트는 자바스크립트에 타입을 부여한 언어입니다. 자바스크립트의 확장된 언어라고 볼 수 있습니다. 타입스크립트는 자바스크립트와 달리 브라우저에서 실행하려면 파일을 한번 변환해주어야 합니다. 이 변환 과정을 우리는 컴파일(complile) 이라고 부릅니다.
타입스크립트를 사용함으로써 에러를 사전에 미리 알 수 있고, 타입을 미리 지정하기에 개발툴의 자동완성을 최대로 활용할 수 있어 생산성이 높아집니다.
// 문자타입 - 타입추론
let aaa = '안녕하세요';
aaa = '반갑습니다';
aaa = 3; // Error
// 문자타입
let bbb: string = '반갑습니다';
bbb = '반가워요!!';
bbb = 123; // Error
// 숫자타입
let ccc: number = 5;
ccc = '33'; // Error
// 불린타입
let ddd: boolean = true;
ddd = 11; // Error
ddd = false;
// 심볼타입
Symbol('a') === Symbol('a') // false
const a = Symbol();
const obj = {
[a]: 'a'
}
obj['a'] // 접근X
// null / undefined
let union: string | null = null;
let v: void = undefined;
// 배열타입
let eee: number[] = [1, 2, 3, 4, 5];
let fff: string[] = ['철수', '영희', '훈이'];
let ggg: (number | string)[] = [1, '철수', 2, '영희'];
let mymoney: number[] | string[] = [1000, 2000, 3000];
mymoney = ['1000원', '2000원', '3000원'];
// 객체타입
interface IProfile {
name: string;
age: number | string;
school: string;
}
let profile: IProfile = {
name: '철수',
age: 13,
school: '다람쥐초등학교',
};
profile.age = '13살';
interface a {
a!: string;
b?: string;
}
const aaaaa: a = {
a: 'sss',
};
// 함수타입
function qqq(a: number, b: number): number {
return a + b;
}
let result = qqq(1, 2);
// 튜플
let a: [string, number];
a = ['a', 1]
a[1] = '1' // Error
a[2] // Error