Предположим, у меня есть этот примерный класс, но на самом деле у него гораздо больше свойств
class Foo {
name: string
dob: number
constructor(name: string, dob: number) {
this.name = name;
this.dob = dob;
}
get age() {
return new Date().getTime() - this.dob
}
}
Теперь Typescript умен, и когда я создаю экземпляр класса, он предоставит мне все нужные свойства:
var classInstance = new Foo('name', new Date().getTime())
classInstance.name // ok
classInstance.dob // ok
classInstance.age // ok
Где-то в моем коде класс клонируется с помощью оператора распространения, я не уверен, что TS делает за сценой, но он действительно умен и дает мне все нужные свойства
var classJSON = {...classInstance};
classJSON.name // ok
classJSON.dob // ok
classJSON.age // missing
Это здорово, однако иногда мне нужно использовать тип classJSON
.. Единственный способ, которым я могу его извлечь, - это сделать следующее:
var classJSON = {...new Foo('', 0)}
type ClassJSONType = typeof classJSON;
Есть ли способ извлечь тип прямо из Foo
без необходимости создания экземпляра Javascript?
Foo
- person Aleksey L.   schedule 17.03.2020