У меня есть класс javascript, который я хочу переписать в TS:
class A {
constructor({foo = 'foo', bar = 123, baz = true} = {}) {
this.foo = foo
this.bar = bar
this.baz = baz
}
}
То, что я сейчас написал на TS:
interface AProps {
foo: string,
bar: number,
baz: boolean,
}
class A {
foo: string
bar: number
baz: boolean
constructor({foo = 'foo', bar = 123, baz = true}: Partial<AProps> = {}) {
this.foo = foo
this.bar = bar
this.baz = baz
}
}
Как видите, машинопись имеет в 3 раза больше кода, как сделать это более компактным? Как я знаю, почти любое дублирование кода является анти-шаблонным, поэтому должен быть способ сообщить машинописному тексту, что я хочу, чтобы все поля в классе были из этого интерфейса.