Если я использую такой тип в функции:
// This is all the possible keys this object may contain
type PossiblyEverything = {
name?: ?string;
id?: ?string,
key?: ?string,
};
Но мне предоставляется что-то вроде этого:
type OnlySome = {
name: ?string
};
const result: OnlySome = {
name: 'hello world',
};
А затем использовать его в такой функции, как:
const transformQueryResult = (item: PossiblyEverything) => ({
...result,
uppercaseName: item.name && item.name.toUpperCase()
});
transformQueryResult(result);
В результате я получу сообщение об отсутствии свойств id
и key
. Однако, если я изменю тип PossiblyEverything
на $Shape<PossiblyEverything>
, он будет работать как положено. Чего я не понимаю, так это то, что у меня его еще нет? Каждое свойство в PossiblyEverything
уже необязательно.