У меня есть некоторый класс со всеми publi c членами (по существу, структура), и я хотел бы сохранить его данные:
class SomeClass {
public foo: string;
public bar: string;
public getFooBar() {
return this.foo + this.bar;
}
}
Как часть поиска хранилища, я хотел бы иметь интерфейс, который правильно определяет его, например:
interface ISomeClassData {
foo: string;
bar: string;
// notice there is no getFooBar()
}
const test: ISomeClassData = magic();
if ("getFooBar" in test === false) {
return "Success. This is an interface, and not a class";
}
Один типичный (но неприменимый) способ сделать такую вещь будет выглядеть так:
interface ISomeClassData {
foo: string;
bar: string;
}
class SomeClass extends ISomeClassData {
// code omitted
}
В моем сценарии сумма свойств publi c в классе очень велико, и было бы очень легко добавить что-то в класс без добавления в интерфейс. Вместо этого я хотел бы получить интерфейс из класса.
Можно ли получить интерфейс из свойств класса (не используя методы) в Typescript?
Воображаемый пример:
type ISomeClassData = JustThePublicProperties<SomeClass>