Skip to main content

기본 타입

Typescript 공식 핸드북을 참고하여, 필요한 부분만 정리하였음.

Boolean#

  • 불리언 타입 (true/false)
let isDone: boolean = false;

Number#

  • 숫자 타입 (정수/실수/2진수/8진수/16진수)
let decimal: number = 6;
let binary: number = 0b1010; // 2진수
let octal: number = 0o744; // 8진수
let hex: number = 0xf00d; // 16진수

String#

  • 문자열 타입
let fullName: string = 'Bob Bobbington';
let sentence: string = `Hello, my name is ${fullName}.`; // 템플릿 리터럴

Array#

  • 배열 타입
let list: number[] = [1, 2, 3]; // 방식 1
let list: Array<number> = [1, 2, 3]; // 방식 2

Tuple#

  • 고정 길이의 배열 타입
let t2: [string, number]; // 원소 개수가 2인 튜플
t2 = ['a', 1];
let t3: [string, number, string]; // 원소 개수가 3인 튜플
t3 = ['a', 1, 'b'];

Enum#

  • 열거형 타입
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green; // 실제 c에는 Color의 인덱스가 할당 (Green=1)

Any#

  • 모든 값을 할당할 수 있는 타입
  • 주로 타입을 특정할 수 없을 때 사용 (왠만하면 사용하지 않는 것을 권장)
let notSure: any = 4;
notSure = 'maybe a string instead';
notSure = false;

Void#

  • 값이 없는 타입
  • undefiend 또는 null 값만 할당 가능
function warnUser(): void {
console.log('This is my warning message');
}

Null and Undefined#

  • 타입으로 사용하기에는 별 쓸모가 없다.
  • 모든 타입에는 undefined 또는 null 값을 할당할 수 있다.
    • 단, 컴파일 옵션 중 --strictNullCheck가 활성화되어 있으면, void와 자기 타입(undefined, null)에만 할당할 수 있다. (활성화 하는 것이 권장으로, 만약 undefiendnull 값이 필요할 경우 union type 활용하자)
let u: undefined = undefined;
let n: null = null;

Never#

  • 값이 발생하지 않는 타입
// 무조건 예외가 발생하는 함수
function error(message: string): never {
throw new Error(message);
}
// 리턴하지 않는 함수
function infiniteLoop(): never {
while (true) {}
}

Object#

  • 객체 타입
  • primitive타입(number, string, boolean, symbol, null, undefined)이 아닌 모든 값 할당 가능
    • strictNullChecks 컴파일 옵션이 꺼져 있으면, nullundefined 할당 가능
declare function create(o: object | null): void;
create({ prop: 0 }); // ok
create(null); // ok
create(42); // compile error
create('string'); // compile error
create(false); // compile error
create(undefined); // compile error

Type Assertion#

  • 지정된 타입보다 더 구체적인 타입을 알고 있을 때, 구체적인 타입으로 간주하도록 타입을 변경
  • 컴파일 시점에만 영향 (런타임 타입검사가 필요한 경우, 직접 구현해야함)
  • jsx 내에서 사용할 경우, as 방식만 가능
let someValue: any = 'this is a string';
let strLength1: number = (<string>someValue).length; // 방식 1
let strLength2: number = (someValue as string).length; // 방식 2