#typescript #object #properties #this #object-literal
#typescript #объект #свойства #это #объект-литерал
Вопрос:
Как я мог бы избежать использования имени свойства объекта вместе с ключевым словом this в TypeScript?
Например. Я могу написать:
const foo = 2;
const bar = 3;
const baz = { foo, bar };
Но я не могу сделать следующее:
class A {
foo: number = 2;
bar: number = 3;
f() {
const baz = { this.foo, this.bar };
}
}
Комментарии:
1. Я думаю, вы могли бы сначала сделать
const { foo, bar } = this;
, но почему не простоconst baz = { foo: this.foo, bar: this.bar }
?2. @jonrsharpe, я просто хочу использовать более краткую версию. 🙂
Ответ №1:
Если вы действительно не хотите повторения вообще, вы можете написать вспомогательный метод самостоятельно:
class A {
foo: number = 2;
bar: number = 3;
f() {
const baz = select(this, "foo", "bar")
}
}
function select<T, K extends keyof T>(obj: T, ...props: Array<K>): Pick<T, K> {
const copy = {} as Pick<T, K>;
props.forEach(p => copy[p] = obj[p])
return copy
}