• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

PartialType과 OmitType 동시 적용

23.02.20 20:23 작성 조회수 376

0

포트폴리오 과정의 'N:M 등록 및 조회/회원가입'을 처리하는 중 질문할 것이 나와 질문을 드립니다.

User의 생성부분을 구현하기 위해 CreateUserInput 타입을 만들었고 해당 부분에서 유저 아이디, 패스워드, 이메일 등을 기입하도록 하였습니다.

@InputType()
export class CreateUserInput {
  @Field(() => String)
  loginId: string;

  @Field(() => String)
  @MinLength(8)
  password: string;

  @Field(() => String)
  name: string;

  @Field(() => String)
  address: string;

  @Field(() => String)
  @IsPhoneNumber('KR')
  phone: string;

  @Field(() => String)
  @IsEmail()
  @Transform(({ value }) => value.toLowerCase())
  email: string;
}

 

그리고 User의 수정 부분을 구현하기 위해 UpdateUserInput 타입을 만들었습니다. 단순히 OmitType으로 CreateUserInput 부분을 넘겨 만들었습니다만, API 동작에서 패스워드 부분을 넘기지 않으면 필수 항목을 입력하지 않았다고 수정이 되지 않았습니다.

@InputType()
export class UpdateUserInput extends OmitType(CreateUserInput,
  ['loginId', 'email'], InputType) {
}

 

그래서 그냥 PartialType까지 상속하고 싶었습니다만 타입스크립트도 다중 상속을 지원하지 않는지 OmitType과 PartialType을 함께 쓸 수 없었습니다. 이러면 그냥 CreateUserInput처럼 전부 구현할 수 밖에 없나요? API 부분에서 넘기지 않은 부분은 그냥 그대로 냅두는 것을 목적으로 합니다.

답변 1

답변을 작성해보세요.

1

ZZAMBA님의 프로필

ZZAMBA

질문자

2023.02.20

chatGPT에 물어보니 바로 알려주네요. 자답합니다.

 

@InputType()
export class UpdateUserInput extends PartialType(
  OmitType(CreateUserInput, ['loginId', 'email'], InputType)) {
}