인프런 커뮤니티 질문&답변

장정욱님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

08-03 Typescript 심화 타입 ( Utility, Generic)

TypeScript Utility 부분 질문드립니다

해결된 질문

작성

·

268

0

Utility 부분 강의에서 type의 Partial, Required 등을 이용하여 모든 프라퍼티를 옵션으로 바꾸거나 필수로 바꾸는 방법을 가르쳐주셨는데, 특정 하나만 옵션으로 하거나, 특정 하나만 필수인자로 바꾸는 방법은 없을까요?

interface IProfile {

name: string;

age: number;

school: string;

hobby?: string;

friend:? string;

}

으로 정의했다고 하면 여기서 school만 옵션으로 바꾸고 싶다면, 방법이 없을까요?

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 정욱님!

해당 interface를 상속받고, school만 오버라이딩 하시면 될 것 같아요!^^

위 내용들은 수업때 간략히 언급했던 내용이므로, 아래를 참고하시면 바로 이해가 되실거예요!

interface AAAAAAA extends IProfile {
   school?: string
}

 

장정욱님의 프로필 이미지
장정욱
질문자

답글 감사합니다.

말씀하신대로 오버라이딩은 되는데, AAAAAAA 부분에 빨간줄이 그어지면서,
Interface 'AAAAAAA' incorrectly extends interface 'IProfile'. Types of property 'school' are incompatible Type. 이라는 에러가 뜨네요 ㅠ

해결 방법이 없을까요..?

노원두님의 프로필 이미지
노원두
지식공유자

네! 정욱님!

확인 후 드린 답변이었는데, 타입스크립트 버전에따라 문제가 되는 것 같네요!

interface AAAAAAA extends Omit<IProfile, "school"> {
  school?: string
}

위와 같이 수업때 배운 유틸리티 타입을 응용하셔서 해결해 보세요!^^