async getFormattedData(data: object): Promise<Type1 | Type2 | Type3> {
const anyDataObject = this.validateData(data);
const result = this.formatDataByType(anyDataObject);
return result;
}
formatDataByType<T extends UniversalType>(data: T): T {
// какая-то работа в зависимости от разного набора данных в data объекте определяясь по типу
}
Aetae, не совсем.) Это не работает только если передаёшь объект как аргумент, тогда да, идёт нестрогое сравнение объектов (забыл как это правильно называется), но если ты вручную свойства прописываешь (в пропсах компонента, к примеру, или объект по интерфейсу создаёшь), то прописывать надо все свойства, если они не опшинал.
Зачем ты расширяешь реф несуществующим свойством? Даже без учёта, что это нехорошо, это просто неразумно, реф есть реф и мутировать его, а не его значение, ни к чему хорошему не приведёт.
Aetae, по моему, это по умолчанию. Во всяком случае я только сейчас узнал, что это можно отключить. :D
Но в любом случае отключать не стоит, поскольку это дарует возможность указать, что ключ быть обязан, пусть он и будет андефайнд. В некоторых случаях бывает полезно для читабельности.
Сергей delphinpro, ну окей, с голой формой я ещё могу отчасти согласиться, но для работы с формами полно библиотек и с ними уже совсем другой разговор.