Open2
二つのクラスの相互のMapperをどう書くべき?
二つのクラスがあって
class UserDomain {
id: number
name: string
}
class UserEntity {
id: number
firstName: string
lastName: string
}
こいつらを(できれば)メソッドで相互変換したい
const userDomain = userEntity.toDomain()
const userEntity = userDomain.toEntity()
でもお互いの定義の中にお互いがないといけなくて無限ループする
export interface UserEntity { // 拡張メソッド
toDomain(): UserDomain;
}
UserEntity.prototype.toDomain = (): UserDomain => {
return {
id = this.id,
name = this.firstName + this.lastName,
// Property 'toEntity' is missing in type ~~~' but required in type 'UserDomain'.
}
}
メソッドで書くのを諦めるしかない?
import { toDomain } from 'UserEntity'
const userDomain = toDomain(userEntity)
ちゃんとコンストラクタを書いて、
class UserDomain {
id: number
name: string
constructor(input: UserDomainInitializeProps) {
Object.assign(this, input)
}
}
type UserDomainInitializeProps = {
id: number
name: string
}
newしてあげればいいというのはわかった
UserEntity.prototype.toDomain = (): UserDomain => {
new UserDomain({
id = this.id,
name = this.firstName + this.lastName,
// Property 'toEntity' is missing in type ~~~' but required in type 'UserDomain'.
})
}