如果我在函数中使用这样的类型:
// 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
中的每个属性都是可选的。