TypeScript
- 타입 문법이 추가된 자바스크립트
- TS -> JS transpile
- TS를 JS로 변환하기 전 문법을 체크하여 에러 발생


Types
Optional parameter: 선택적 변수
- player object는 이름을 가지지만 나이는 옵션
- 변수명? : 타입
const player : {
name: string,
age?: number // age: number | undifined
} = {
name:"hi"
};
if(player.age && player.age < 10) { // age가 존재한다면 이라는 조건을 추가
...
}
Type Alias: 별칭 타입
- 코드의 재사용성 증가, 불필요한 코드 제거
type Age = number; // 첫문자는 대문자
type Name = string;
type Player = {
name:Name,
age?:Age
};
const hihi : Player = {
name:"hihi"
};
const hoho : Player = {
name:"hoho"
};
Return Type
function playerMaker(name:string) : Player { // 파라미터, 리턴타입 명시
return {
name // name:name 이름이 같다면 생략가능
}
}
const nono = playerMaker("nono");
nono.age = 12;
- 화살표 함수 적용
const playerMaker = (name:string) : Player => ({name});
readonly
- 불변성
type Player = {
readonly name:Name,
age?:Age
};
const numbers : readonly number[] = [2,3,4];
numbers.push(1); // Property 'push' does not exist on type 'readonly number[]'.
Tuple
const player : (readonly) [string, number, boolean] = ["hoho", 12, false];
player[0] = 1; // Type 'number' is not assignable to type 'string'.
any
- ts의 제어를 벗어나고 싶은 경우
const a : any[] = [1,2,3,4]
const b : any = true;
a+b // "1,2,3,4true"
unknown
- 어떤 타입인지 모를 경우
- 타입 확인 필요
let a : unknown;
if(typeof a === 'number') {
let b = a + 1;
};
if(typeof a === 'string') {
let b = a.toUpperCase();
};
void
- 리턴 값이 없는 경우

function hello() {
console.log('x');
};
const a = hello();
a.toUpperCase(); // Property 'toUpperCase' does not exist on type 'void'.
never
- 절대 리턴을 하지 않음
- 에러 발생시 사용
function hello() : never {
// return "X"; // Type 'string' is not assignable to type 'never'.
throw new Error("xxx");
}
'개발 > JavaScript' 카테고리의 다른 글
| [TypeScript] Classes (0) | 2022.08.04 |
|---|---|
| [TypeScript] Functions (0) | 2022.08.04 |
| [Node.js] Auth route, Logout Route (0) | 2022.07.22 |
| [Node.js] login route (0) | 2022.07.22 |
| [Node.js] 정보보호, Bcrypt (0) | 2022.07.21 |