Flows $ Shape <t>对已具有所有可选属性的对象有什么作用?

时间:2018-09-07 19:42:29

标签: javascript ecmascript-6 flowtype

如果我在函数中使用这样的类型:

// 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);

最后我会看到一个错误,告诉我我缺少idkey属性。但是,如果我将PossiblyEverything类型更改为$Shape<PossiblyEverything>,它将按预期工作。我不明白的是,我还没有吗? PossiblyEverything中的每个属性都是可选的。

0 个答案:

没有答案