} -->
kita bisa gunakan builder ketika pembuatan object (construct) parameter yang dimasukkan dirasa terlalu panjang, dan juga tidak semua parameter wajib untuk memiliki nilai.
// @noErrors
// @filename: builder.ts
export class User {
public name: string
public age: string
public address?: string | undefined
constructor(name: string, address?: string | undefined, age: string) {
this.name = name
this.age = age
this.address = address
}
}
// @noErrors
// @filename: index.ts
import { User } from '$lib/pattern/builder'
const user1 = new User('khansa', 'bekasi', '19')
const user1 = new User('aisyah', '', '20')
untuk dari itu pattern builder ini hadir. dari kode diatas kita bisa ubah jadi seperti dibawah ini.
// @noErrors
// @filename: builder.ts
class User {
public name: string = ''
public age: string = ''
public address: string | undefined = undefined
}
export class UserBuilder {
private user: User
constructor() {
this.user = new User()
}
setName(value: string) {
this.user.name = value
return this
}
setAge(value: string) {
this.user.age = value
return this
}
setAddress(value: string) {
this.user.address = value
return this
}
build() {
return this.user
}
}
// @noErrors
// @filename: index.ts
import { UserBuilder } from '$lib/pattern/builder'
const user1 = new UserBuilder().setName('ubay').setAddress('di mana aja').setAge('20').build()
const user2 = new UserBuilder().setName('ubay2').setAge('30').build()
console.log(user1) // User { name: 'ubay', age: '20', address: 'di mana aja' }
console.log(user2) // User { name: 'ubay2', age: '30', address: undefined }
dengan code diatas jika kita tidak memasukan nilai pada property address tidak jadi masalah. dan mau menambah parameter sebanyak apa pun kode kita masih enak dilihat