TypeScript는 타입을 선언할 때 변수명 옆에 :타입을 붙여주면 된다.
let age:number = 30;
let isAdult:boolean = true;
let car:string = "BMW"
number, boolean, string을 통해서 기본적인 유형의 타입을 선언할 수 있다.
let a:number[] = [1,2,3];
let a2:Array<number> = [1,2,3];
let week1:string[] = ['mon','tru','wed'];
let week2:Array<string> = ['mon','tru','wed'];
배열을 선언하는 방법은 2가지가 있는데,
하나는 타입[]으로 선언하는 방식과 Array <타입>으로 선언하는 방식이 있다.
만약 문자열 배열에 숫자, 숫자 배열에 문자 같이 다른 타입을 넣을 경우 당연히 에러가 발생한다.
let b:[string,number];
b = ['z',1];
튜플(Tuple)이라는 선언 방식인데, 배열에 서로 다른 값을 넣을 경우에 사용한다.
b = ['z',1]; --- 가능
b = [1,'z']; --- 불가능
string, number 순으로 배열을 선언했기 때문에 ['z',1]은 가능하지만, [1, 'z']는 에러가 발생한다.
b[0].toUpperCase(); --- 가능
b[1].toUpperCase(); --- 불가능
마찬가지로 string에 있는 toUpperCase() 함수도 number 타입에는 당연히 사용할 수 없다.
function sayHello():void {
console.log("hello");
}
const sayHello2 = ():void => {
console.log("hello");
}
void는 함수에서 return 해주는 값이 없을 경우에 사용하는 타입이다.
function showError():never {
throw new Error();
}
function infLoop():never {
while(true){
// ...
}
}
never는 error를 던지는 함수나 영원히 끝나지 않는 함수의 타입으로 사용한다.
enum Os {
Window,
Ios,
Android
}
enum은 비슷한 값끼리 묶여있는 타입이다.
Window, Ios, Android에 특별한 값을 지정하지 않는다면, 자동으로 0부터 증가하는 값을 가진다.
enum Os {
Window = 3,
Ios,
Android
}
만약 Window = 3을 지정해준다면 Ios는 4, Android는 5의 값을 가진다.
enum Os {
Window = 3,
Ios = 10,
Android
}
또 Ios에 10을 줄 경우 Android는 11의 값을 가지게 된다.
console.log(Os[10]) // --- Ios
console.log(Os["Ios"]) // --- 10
enum은 양방향으로 매핑되어 있기 때문에 위와 같이 사용할 수 있다.
enum Os {
Window = 'win',
Ios = 'ios',
Android = 'android'
}
enum은 숫자뿐만 아니라 문자열도 줄 수 있다.
enum Os {
Window = 'win',
Ios = 'ios',
Android --- 에러
}
하지만 숫자와 다르게 문자열로 값을 주다가 안 준 값이 있을 경우 에러를 반환하게 된다.
console.log(Os["Ios"]) // --- "ios"
또 다른 특징으로 문자열을 입력할 경우 단방향 매핑만 된다.
enum Os {
Window = 'win',
Ios = 'ios',
Android = 'android'
}
let myOs:Os;
myOs = Os.Window
enum 타입을 가진 변수를 타입으로 가질 경우 해당 변수의 값 외엔 에러가 발생하게 된다.
let a:null = null;
let b:undefined = undefined;
null과 undefined는 말 그대로 null과 undefined 값만 가지는 변수이다.
'TypeScript > 기초' 카테고리의 다른 글
[TypeScript] 추가 타입 (5) | 2022.04.21 |
---|---|
[TypeScript] 기본 타입 정리 (0) | 2022.04.16 |
[TypeScript] 컴파일 시 세부 설정 (0) | 2022.04.15 |
[TypeScript] React에서 TypeScript 사용하기 (0) | 2022.04.13 |
[TypeScript] 필요한 이유 (0) | 2022.04.07 |