Довольно стандартным вариантом использования будет создание пустого объекта и заполнение его необходимыми данными. В конце процесса заполнения объект будет содержать все необходимые свойства, но когда он создается, он не имеет ни одного, и поэтому TypeScript не позволит мне набрать этот новый объект с правильным типом.
Пример:
interface ISomeType {
x: string;
y: string;
}
function buildObj(): ISomeType {
const obj: ISomeType = {}; // TS Error: {} doesn't include x and y
obj.x = foo();
obj.y = bar(); // At the end of the filling process, the object is correct
return obj;
}
Как мне решить эту проблему? Как мне заставить TypeScript понять, что этот новый объект должен быть указанного типа, у него просто еще нет необходимых свойств, и они будут в конце?
Если я отмечу obj
типом Partial<ISomeType>
, тогда я не могу пометить тип возвращаемого значения функции ISomeType
, что является моим намерением.