자바스크립트는 런타입에 타입이 결정되는 동적 타입
타입스크립트는 런타임전에 개발 단계에서 타입이 결정되는 정적 타입
브라우저는 자바스크립트만 이해할 수 있기 때문에 타입스크립트를 실행하려면
자바스크립트로 컴파일을 해야한다.
타입 추론(type reference)
타입스크립트는 스스로 타입을 추론한다.
const number1 = 5; // number1의 타입은 5
let number2 = 2.5; // number2의 타입은 number
// 따로 타입을 지정해 줄 필요가 없다, 하지만 변수를 먼저 선언하고
// 나중에 값을 할당하는 경우에는 지정하기도 한다.
let number3: number;
number3 = 5;
타입스크립트는 타입을 잘못 사용하고 있는지 확인하고 에러를 통해 알려준다.
const person: {
name: string;
age: number;
hobbies: string[]; // string 배열
role: [number, string]; // tuple 타입, 0번째에는 number, 1번째에는 string만 와야한다. 길이도 2로 고정
} = {
name: 'yu',
age: 26,
hobbies: ['game', 'sports'],
role: [2, 'author']
}
person.role.push(123) // push 메소드의 경우에는 튜플 타입이 걸러내지 못한다.
/*
type StrictTuple<T extends any[]> =
Omit<T, keyof (any[])> extends infer O ? { [K in keyof O]: O[K] } : never;
혹은
readonly, as const 를 사용해서 push를 걸러내는 방법이 있었다.
*/
for (const hobby of person.hobbies){
console.log(hobby.toUpperCase());
}
// hobby는 string, person.hobbies는 string[]
// .을 찍으면 그에 맞는 메소드들이 튀어나온다. 아주 편리함.
'개발 > TypeScript' 카테고리의 다른 글
[TypeScript] interface vs type alias에 대한 개인적인 생각 (0) | 2023.11.14 |
---|---|
[TypeScript] tsconfig.json 이해하기 (0) | 2023.08.26 |
[TypeScript] 매일매일 #4 (0) | 2022.03.18 |
[TypeScript] 매일매일 #3 (0) | 2022.03.17 |
[TypeScript] 매일매일 #2 (0) | 2022.03.16 |