Já faz um tempo desde que o construtor abreviado foi introduzido, e ele é realmente útil. Agora eu posso escrever isto:
class Dog {
constructor(
public age: number,
public weight: number,
) {}
}
em vez disso:
class Dog {
public age: number
public weight: number
constructor(
age: number,
weight: number,
) {
this.age = age
this.weight = weight
}
}
E funciona ainda melhor para classes mais complexas.
Gostaria de saber se há alguma abreviação para construtor de classe com parâmetros nomeados (usando destruição de objeto)? Acho que new Dog({age: 3, weight: 8})
é muito mais claro do que new Dog(3, 8)
. Não há chance de perder as posições dos argumentos. Mas a definição de classe para isso parece realmente feia:
class Dog {
// 1. declare properties
public age: number
public weight: number
constructor({
// 2. object destructing
age,
weight,
}: {
// 3. declare object type
age: number,
weight: number,
}) {
// 4. assign values
this.age = age
this.weight = weight
}
}
// x4 duplicates, no DRY at all