[Typescript] builder 패턴 남용 금지Node.js2024. 4. 21. 18:03
Table of Contents
자바 계열에서 넘어오신 분들이 builder 패턴을 통해 인스턴스 생성 전략을 자주 사용합니다.
typescript에서 named param 가능하기 때문에 params가 많다는 이유로는 builder 패턴을 사용할 필요가 없습니다.
코드
interface UserProps {
nickname: string;
email: string;
role: UserRoleEnum;
deletedAt: Date | null;
}
export class User extends Entity<UserProps, UserID> {
private constructor(props: UserProps, id?: UserID) {
super(props, id);
}
static create(props: UserProps, id?: UserID) {
const isValid = Guard.againstNullOrUndefined([props.nickname, props.email]);
if (!isValid)
throw new UserRequestPropsNullOrUndefinedException('올바르지 않은 요청 구조입니다. 요청에 대한 구조를 확인해주세요.');
return new User(props, id);
}
get id(): UserID | undefined {
return this._id;
}
get nickname(): UserNickname {
return this.props.nickname;
}
get email(): UserEmail {
return this.props.email;
}
}
// 기본적인 사용방법
User.create({
nickname: raw.nickname,
email: raw.email,
role: raw.role,
deletedAt: raw.deleted_at,
});
//변수명과 속성명이 같다면 키 생략 가능
const [nickname, email, role, deletedAt] = ['puleugo', 'puleugo@gmail.com', UserRoleEnum.USER, null];
User.create({nickname, email, role, deletedAt});
반응형
'Node.js' 카테고리의 다른 글
[PostgreSQL] 내가 enum을 쓰지 않는 이유 (0) | 2024.04.14 |
---|---|
PostgreSQL Check란? Check를 사용하지 말아야하는 이유 (0) | 2024.04.11 |
[NestJS] eslint를 작성해보자. (0) | 2023.08.23 |
원클릭 회원가입 승인 구현(telegram bot, AWS s3, Flutter, Nest.js) (0) | 2023.07.21 |
[NestJS] TypeORM을 통한 트랜잭션 관리 (0) | 2023.04.30 |
@임채성 :: 푸르고 개발 블로그
취미로 쓰는 개발 블로그입니다. 문의: puleugo@gmail.com