타입스크립트의 기본 타입과 문법

shockwave·2024년 11월 12일

TIL

목록 보기
46/49

간단 예시

const name : string = 'NAME';
const arr : array [number] = [1, 2, 3];
interface User {
	name : string;
	age : number;
}

Const user : User = {
	name : 'xx',
	age : 
}

옵셔널 파라미터 : 함수에서 필수적으로 전달하지 않아도 되는 인자

function hello(name?: string) {
	return `hello, ${name || "world}`;
}
console.log(hello("Sam"));

리터럴 타입 : 특정한 값들만 허용하는 타입

let direction: "left" | "right" | "up" | "down";
direction = "left";  // 가능
direction = "right"; // 가능
// direction = "forward"; // 오류 발생 (지정된 리터럴 외의 값)

유니온 타입 : 여러 타입 중 하나를 허용하는 것

let value = string | number;
value = "Hello"; // 문자열 할당 가능
value = 42;      // 숫자 할당 가능

인터섹션 타입 : 여러 타입을 모두 포함하는 것

interface Person {
  name: string;
}

interface Employee {
  employeeId: number;
}

type EmployeePerson = Person & Employee;

const employee: EmployeePerson = {
  name: "Alice",
  employeeId: 123
};

제네릭 타입

interface GenericMobile<T> {
  name: string;
  age: number;
  option: T;
}

// T가 string이면 해당 T 제네릭 타입의 프로퍼티는 string 타입이어야한다.
const m1: GenericMobile<string> = {
  name: 'm1',
  age: 10,
  option: 'string',
};

// T가 object이면 해당 T 제네릭 타입의 프로퍼티는 object 타입이어야한다.
const m3: GenericMobile<object> = {
  name: 'm3',
  age: 12,
  option: {
    color: 'red',
    price: 1000,
  },
};
// object타입인 제네릭타입의 경우 명시적으로 객체 그 자체의 부분 명시 또한 가능하다.
const m4: GenericMobile<{ color: string; price: number }> = {
  name: 'm4',
  age: 13,
  option: {
    color: 'blue',
    price: 1000,
  },
};

유틸리티 타입 :내부 프로퍼티들을 어떻게 선언할 지 조작해주는 타입

  • keyof
    유니온 타입(키가 string형태가 됨)으로 받을 수 있게 만든다.
  • Partial
    옵셔널 타입으로 받을 수 있게 만든다.
  • Required
    모두 필수 타입으로 만든다. (옵셔널 파라미터또한)
  • Readonly
    읽기 전용 타입으로 만든다.(==const / 수정불가능)
  • Record<K, T>
    키 : 밸류 타입으로 받을 수 있게 만든다.
  • Pick<T, K>
    객체 T의 프로퍼티 Key들의 타입을 만든다.
  • Omit<T, K>
    Pick과 반대, 해당 Key들을 제외하고 타입을 만든다.
  • Exclude<T1, T2>
    T1에서 T2를 제외한 나머지 타입을 만든다.
  • NonNullable
    해당 Type에서 Null을 제외한 타입을 만든다.

Tip>
type : 리터럴 형태로 구현할 때 사용하기 용이하다.
interface : 객체 형태로 구현할 때 사용하기 용이하다.

profile
생각을 많이. 입은 무겁게. 심장은 항상 열심히 뛰는 사람이 되자.

0개의 댓글