// number
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;
// string
let str1: string = "hello";
let str2: string = 'hello';
let str3: string = `hello`;
let str4: string = `heelo ${num1}`;
// boolean
let bool1: boolean = true;
let bool2: boolean = false;
// null
let null1: null = null;
// undefined
let unde1 : undefined = undefined;
2. 리터럴 타입
// 리터럴 타입 (상수)
let numA: 10 = 10;
3. 배열과 튜플
// 배열
let numArr: number[] = [1, 2, 3];
let strArr: string[] = ['hello', 'world'];
let boolArr: boolean[] = [true, false, true];
// 배열에 들어가는 요소들의 타입이 다양할 경우
let multiArr: (string | number)[] = [1, 'hello'];
// 다차원 배열의 타입을 정의하는 방법
let doubleArr: number[][] = [
[1, 2, 3],
[4, 5],
];
// 튜플
// 길이와 타입이 고정된 배열
let tup1: [number, number] = [1, 2];
let tup2: [string, number, boolean] = ['1', 2, false];
// any
// 특정 변수의 타입을 우리가 확실히 모를 때 사용
let anyVar: any = 10;
anyVar = '사실 any를 자주쓰면 안됨';
let num: number = 10;
num = anyVar; //any타입은 다른 타입의 값에 삽입 가능
// unknown
let unknownVar: unknown;
unknownVar = '';
unknownVar = 1;
unknownVar = () => {};
// num = unknownVar -> unknown타입은 다른 타입의 값에 삽입 불가
// 아래와 같이 '타입정제' 후에 사용 가능
if (typeof unknownVar === 'number') {
num = unknownVar
}
7. void, never
// void
// 아무것도 없음을 의미하는 타입
function func1(): string {
return 'hello';
}
function func2(): void {
console.log('hello');
}
// never
// 불가능한 타입
function func3(): never {
while(true) {
}
}