타입스크립트 TypeScript

타입스크립트 기초 - 단일값 / 복합값 / 특이타입 / 타입강제

leexx 2023. 5. 15. 03:12

단일 값

불리언 (boolean)

  • true, false
let isDone: boolean = false;

숫자 (number)

  • 부동 소수값
  • 16진수, 10진수, 2진수, 8진수 리터럴도 지원
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

문자열 (string)

  • 큰따옴표, 작은따옴표, 템플릿 리터럴 모두 포함
let color: string = "blue";
color = 'red';

복합

배열 (Array)

let list: number[] = [1, 2, 3];

let list: Array<number> = [1, 2, 3];

튜플 (Tuple)

  • 요소의 타입과 갯수가 고정된 배열
  • 순서를 지켜야 함
// 튜플 타입으로 선언
let x: [string, number];

// 초기화
x = ["hello", 10]; // 성공

// 잘못된 초기화
x = [10, "hello"]; // 오류, 순서가 다르다 

열거 (Enum)

  • Enum = Enumaration (열거)
  • 값의 집합에 더 나은 이름을 붙여줄 수 있음
// 아무것도 입력하지 않은 경우, 알아서 0, 1, 2가 들어감
enum Color {
    Red, // 알아서 0 
    Green, // 알아서 1
    Blue // 알아서 2
};

let c: Color = Color.Green;
// 시작 값만 정해줄 수 있음
enum Color {
    Red = 10, 
    Green, // 알아서 11
    Blue // 알아서 12
};

let c: Color = Color.Green; // 11
// 모든 값을 정해줄 수 있음
enum Color {
      Red = 100, 
    Green = 200, 
    Blue = 300
};

let c: Color = Color.Green; // 200

객체 (Object)

  • 원시타입이 아닌 타입
    • number, string, boolean, bigint, symbol, null, 또는 undefined 가 아닌 나머지
let obj: object = {};
let arr: object = [];
let func: object = function () {};
let nullValue: object = null;
let date: object = new Date();

특이 타입

Any

  • 어떤 타입이 와도 괜찮은 경우
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성공, 분명히 부울입니다.

Void (함수에서 반환 타입에서 주로 사용)

  • 어떤 타입도 존재하지 않음
function warnUser(): void {
    console.log("This is my warning message");
}

Null and Undefined

  • null, undefined 에서 사용
// 이 밖에 이 변수들에 할당할 수 있는 값이 없습니다!
let u: undefined = undefined;
let n: null = null;

Never

  • 절대 발생할 수 없는 타입
    • 무조건 오류가 발생한다던가, 종료를 못해서 반환을 못하던가
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function error(message: string): never {
    throw new Error(message);
}

// 반환 타입이 never로 추론된다.
function fail() {
    return error("Something failed");
}

// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function infiniteLoop(): never {
    while (true) {
    }
}

타입 강제 (Type assertion)

  • 컴파일러에게 "날 믿어, 난 내가 뭘 하고 있는지 알아"라고 말해주는 방법
  • angel-bracket, as 두 가지 방법이 있음
// angel-barcket
let myStr: any = "this is string";
let ll: number = (<string>myStr).length; // myStr 은 무조건 string 이라는 의미
// as
let myStr: any = "this is string";
let ll: number = (myStr as string).length; // myStr 은 무조건 string 이라는 의미

 

참고