In Kotlin a data class can be copied using its auto-generated copy function.
val jack = User(name = "Jack", age = 1)
val olderJack = jack.copy(age = 2)
The copy function signature, as per documentation (Docs):
fun copy(name: String = this.name, age: Int = this.age) = User(name, age)
Can something like this be done in TypeScript?
Is this an acceptable solution, or can it be improved somehow?
export class User {
constructor(
public name: string,
public age: number) {}
copy(parameters: {
name?: string,
age?: number
}): User {
const { name, age } = parameters
return new User(name || this.name, age || this.age)
}
}
This could be solved even with a Partial<User>:
copy(partialUser: Partial<User>): User {
return new User(
partialUser.name || this.name,
partialUser.age || this.age)
}