본문 바로가기
프로그래밍/타입스크립트

타입스크립트 기본타입

by Programmer.Junny 2025. 2. 13.

1. 원시 타입

// 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];

3. 객체

// 객체 리터럴 타입
let user: {
    id?: number,
    name: string,
} = {
    id: 1,
    name: 'junny',
};

let dog: {
    name: string,
    color: string,
} = {
    name: '돌돌이',
    color: 'brown',
}

// 옵셔널 프로퍼티
user = {
    name: '홍길동'
}

// readonly 프로퍼티
let config: {
    readonly apiKey: string,
} = {
    apiKey: 'API Key',
}

4. 타입 별칭(Type Alias)과 인덱스 시그니처

// 타입 별칭 (Type Alias)
type User = {
    id: number,
    name: string,
    nickname: string,
    birth: string,
    bio: string,
    location: string,
}

let user: User = {
    id: 1,
    name: 'junny',
    nickname: 'junny',
    birth: '1105',
    bio: '타입 별칭',
    location: '서울'
};

// 인덱스 시그니처
type CountryCodes = {
    [key: string]: string,
}

let countryCodes: CountryCodes = {
    Korea: 'ko',
    UnitedState: 'us',
    UnitedKingdom: 'uk',
}

5. enum

// enum

enum Role {
    ADMIN = 0,
    USER = 1,
    GUEST = 2,
}

const user1 = {
    name: '1번 유저',
    role: Role.ADMIN,   
}

const user2 = {
    name: '2번 유저',
    role: Role.USER,   
}

const user3 = {
    name: '3번 유저',
    role: Role.GUEST,   
}

6. any, unkown

// 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) {        
    }
}

최근댓글

최근글

skin by © 2024 ttuttak