언어/TypeScript

keyof 연산자

calendar2 2024. 10. 8. 16:21

아래 사진과 같이 Person 타입과 person 객체를 매개변수 호출을 통해 return하는 메서드를 작성하겠다.

keyof 1

 

이미 알다시피 person 매개변수에는 Person 타입을 정의하면 되는데, 옆에 key 매개변수에는 어떤 타입을 정의해야할까? Person이 가진 name과 age 프로퍼티가 모두 문자열로 작성되어 있으므로 string으로 정의해보겠다.

1. string으로 정의했을 때

string일 때

 

string일 경우 에러가 발생한다. key 매개변수 위치에 프로퍼티에 해당하지 않는 문자열을 작성할 수 있기 때문이다.

그러면 프로퍼티에만 한정적으로 하기위해 유니온 타입을 사용해보자.

2. 유니온 타입으로 정의했을 때

유니온 타입

 

에러가 사라졌고 컴파일 과정에서 문제될 부분은 없다. 하지만, 만약 Person 타입이 지금처럼 2개의 프로퍼티가 아닌 100개의 프로퍼티를 가지고 있다면 어떨까?

그럼 유니온 타입에도 100개를 적어줘야 하는 불상사가 벌어진다.

이를 해결하기 위해 keyof 연산자가 존재한다.

3. keyof 연산자 사용

keyof 2

 

keyof 연산자는 typeof 연산자처럼 해당 객체가 가진 key값들을 추론하여 정의해준다. 이를 사용해 많은 수의 프로퍼티를 가진 객체를 핸들링할 수 있다.

참고자료

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

 

'언어 > TypeScript' 카테고리의 다른 글

템플릿 리터럴 타입  (2) 2024.10.09
맵드 타입  (1) 2024.10.09
인덱스드 엑세스 타입  (0) 2024.10.08
프로미스와 제네릭  (1) 2024.09.20
제네릭 클래스  (0) 2024.09.13