[TS] 템플릿 리터럴 타입
TIL
템플릿 리터럴 타입(Template Literal Type)은 템플릿 리터럴을 이용해 특정 패턴을 갖는 String 타입을 만드는 기능이다.type Color = "red" | "black" | "green";type Animal = "dog" | "cat" | "chicken";type ColoredAnimal = `${Color}-${Animal}`;ColoredAnimal타입은 Color와 Animal의 모든 조합을 생성한다.결과는 "red-dog" | "red-cat" | "red-chicken" | "black-dog" | ...같은 유니언 타입이 된다. 이를 활용하면 정해진 패턴의 문자열만 허용하는 타입을 간단히 만들 수 있다.
[TS] 맵드 타입
TIL
맵드 타입(Mapped Type)은 기존 객체 타입을 기반으로 새로운 객체 타입을 만드는 기능이다. 유저 정보를 관리하는 함수들을 작성해보자.interface User { id: number; name: string; age: number;}function fetchUser(): User { return { id: 1, name: "woodstock", age: 20, };}function updateUser(user: User) { // 수정 기능} updateUser 함수로 유저 정보를 수정하려는데, 매개변수 타입이 User여서 수정하고 싶은 프로퍼티만 골라 보낼 수 없다. 이 상황을 해결하기 위해 모든 프로퍼티를 선택적으로 만든 새 타입을 정의해보자.type Partial..
[TS] keyof와 typeof 연산자
TIL
keyof 연산자keyof 연산자는 객체 타입의 모든 프로퍼티 키를 String Literal Union 타입으로 추출하는 연산자이다. 객체의 프로퍼티 값을 가져오는 함수를 작성해보자.interface Person { name: string; hp: number;}function getPropertyKey(person: Person, key: "name" | "hp") { return person[key];}const person: Person = { name: "woodstock", hp: 90,};getPropertyKey(person, "name");이렇게 key의 타입을 "name" | "hp"로 정의하면 Person 타입에 프로퍼티가 추가되거나 수정될 때마다 이 타입도 함께 바꿔야 한다..