오늘의 명언
“ 당신은 소프트웨어 품질을 추구할 수도 있고, 포인터 연산을 할 수도 있다. 그러나 두 개를 동시에 할 수는 없다. ”
-
베르트랑 마이어 (Bertrand Meyer)
300x250
타입스크립트 기본 타입
타입스크립트의 기본 타입은 12가지 종류가 있습니다. : 를 이용하여 자바 스크립트 코드에 타입을 정의 합니다
String
변수의 타입이 문자열인 경우 아래와 같이 사용합니다.
const str: string = 'hello';
Number
변수의 타입이 숫자이면 아래와 같이 사용합니다.
const num: number = 100;
Boolean | Object | Array | Tuple
해당 타입일 경우 아래와 같이 사용합니다.
// Bolean
const isShow: boolean = false
// Object
const data: object = {
title: string
}
// Array
const array: number[] = [10,20,30]
// 제네릭 방식
const array: Array<number> = [10,20,30]
//Tuple
const arr: [number,string] = [10,'hello']
Enum
enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다.
enum API_URL {
GET_USER = '/api/users'
}
const userUrl: API_URL = API_URL.GET_USER
Any
타입스크립트를 점진적으로 적용하기 위해 활용하는 타입입니다. 모든 타입에 대해서 허용한다는 의미를 가지고 있고
무분별하게 사용하면 타입스크립트를 적용하는 의미가 없습니다! 주의하세요!
const str:any = 'hello'
const num:any = 1
const array:any = [1,'asdf']
Void
void 타입은 결과 값을 반환하지 않는 함수에 설정합니다. 반면 결과 값을 반환하는 함수의 경우 명시적으로 변환 값의 타입을 정의합니다.
function Test(title: string): void {
console.log(title)
}
function NumTest(num: number): number {
return num
}
function StrTest(str: string): string {
return str
}
Never
없는 값의 집합이라고 불리며, 어떠한 값도 가질수 없다. uninhabitable type bottom type 이라고도 불린다.
함수의 반환 타입이나 변수의 타입으로 지정될 때 사용됩니다
예시를 보면 아래와같이 값을 가질수 없다.
let test1: never
let test2: any = 123
test1 = test2 // ERROR
그렇다면 어떨때 사용될까?
함수가 항상 예외를 던지는 경우
function throwError(): never {
throw new Error('Error Occured!');
}
switch 문에서 모든 경우를 다루고 있지 않는 경우
type Weekday = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday';
function getWeekdayName(day: Weekday): string {
switch (day) {
case 'Monday':
return 'Monday';
case 'Tuesday':
return 'Tuesday';
case 'Wednesday':
return 'Wednesday';
case 'Thursday':
return 'Thursday';
case 'Friday':
return 'Friday';
default:
const _exhaustiveCheck: never = day; // 'Saturday'나 'Sunday' 등 다른 경우가 올 경우 에러 발생
return _exhaustiveCheck;
}
}
함수 오버로드에서 적절한 반환 타입을 찾을 수 없는 경우
function processInput(value: string | number): string | number {
if (typeof value === 'string') {
return value.toUpperCase();
} else if (typeof value === 'number') {
return value.toFixed(2);
} else {
const _exhaustiveCheck: never = value; // string과 number를 제외한 다른 타입이 들어올 경우 에러 발생
return _exhaustiveCheck;
}
}
반응형
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.