Что Flows $ Shape <T>делает с объектом, который уже имеет все необязательные свойства? - PullRequest
0 голосов
/ 07 сентября 2018

Если я использую такой тип в функции:

// 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 уже необязательно.

...