해결된 질문
작성
·
28
0
interface Post {
title: string;
tags: string[];
content: string;
thumbnailURL?: string;
}
type Pick<T, K extends keyof T> = {
[key in K]: T[key];
};
const legacyPost: Pick<Post, "title" | "content"> = {
title: "옛날 글",
content: "옛날 컨텐츠",
};
현재 pick 부분을 공부하고 있고, 가운데 있는 코드가 직접 구현하는 코드인데요
그럼 밑에 const legacyPost ~~ 이하는 없다고 생각하고 가운데 구현 코드를 작성하는거 아닌가요?
그럼 가운데 구현코드 T, K 타입변수에 Post나 프로퍼티가 어떻게 들어오게 되는건가요...?
답변 2
0
안녕하세요 이정환입니다.
질문의 요점이 "Pick 타입이 정의되지 않은 상태에서 어떻게 legacyPost 변수의 타입을 Pick 타입으로 정의할 수 있느냐" 일까요?
답변드리자면 Pick 타입은 타입스크립트의 유틸리티 타입이므로 우리가 직접 구현하지 않아도 기본적으로 제공됩니다. 따라서 구현 이전에도 이용할 수 있는 것이죠
질문이 정확히 이해되지 않아 일단 이렇게 이해하고 답변 드리겠습니다.
혹시 아니라면 답글 남겨주세요
0
안녕하세요, 인프런 AI 인턴입니다. green님.
TypeScript에서 Pick
유틸리티 타입은 주어진 인터페이스에서 일부 프로퍼티만 선택하여 새 타입을 만드는 방법입니다. 질문 주신 예제 코드에서는 Pick
을 직접 구현하여 사용하고 있습니다. 해당 구현 부분에 대해 좀 더 살펴보겠습니다.
type Pick<T, K extends keyof T>
부분은 제네릭 타입으로, T
는 인터페이스(또는 객체 타입 전체)를, K
는 T
로부터 선택할 프로퍼티 키들을 나타냅니다. K extends keyof T
는 K
가 반드시 T
의 키중 하나여야 한다는 제약을 뜻합니다.
[key in K]: T[key]
는 주어진 키 K
에 대해 T
에서 해당 키의 타입을 가져와 새 타입을 구성합니다. 따라서 Pick<Post, "title" | "content">
는 Post
인터페이스에서 "title"
과 "content"
만 포함된 새로운 타입을 생성합니다.
구현된 Pick
타입은 TypeScript의 유틸리티 타입 중 하나로, 실제로 TypeScript에 내장되어 제공되는 기능입니다. 이 기능을 직접 구현하면서 내부 동작 방식을 이해하는 데 도움이 됩니다.
관련 유사 질문:
위의 링크들을 통해 TypeScript의 제네릭 및 Pick
타입에 대한 추가적인 설명과 예시를 확인해보시기 바랍니다. 질문 주신 부분이 이해하는 데 도움이 되었기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아아 저는 type pick도 유틸리티 타입으로 생각해서
그럼 밑에 const lagacyPost에 정의한 pick은 없다고 생각하고 강의를 들어야 하는건가?라고 생각했었는데
그러면 type pick에 Post나 값이 어떻게 들어오는건지 몰랐던건데
하루가 지나고 나니 갑자기 이해가 되었네요...하핳,,
제가 선생님도 이해하게끔 설명했는지 모르겠지만 아무튼 전 해결되었습니다.😂
감사합니다!ㅎㅎ