Flow新手求教:如何便捷选取类型属性定义新对象?
回答你的Flow类型选择问题
嘿,很高兴你开始接触Flow类型系统啦!你的思路完全在线——$Pick<Car, ['make', 'model']>就是Flow里处理这种场景的惯用且便捷的方式,完全适配你现在的需求。
为什么$Pick是合适的?
$Pick是Flow内置的工具类型,专门用来从一个已定义的对象类型中,挑选出你需要的属性集合来生成新类型。刚好对应你这个场景:还未保存的newCar不需要必填的id,只需要Car类型里的make和model属性,用$Pick可以直接复用Car的类型定义,不用重复编写属性类型,避免冗余和后续维护时的不一致。
实际代码示例
type Car = { id: string, make: string, model: string, owner?: ?{ name: string } }; // 用$Pick为newCar指定类型,完美匹配未保存状态的结构 const newCar: $Pick<Car, ['make', 'model']> = { make: 'Honda', model: 'Accord' };
有没有其他替代方式?
当然,你也可以手动定义一个NewCar类型:
type NewCar = { make: string, model: string }; const newCar: NewCar = { make: 'Honda', model: 'Accord' };
但这种方式的缺点很明显:如果后续Car类型里的make或model类型有变更(比如改成number或者添加可选标记),你需要手动同步NewCar的定义,而$Pick会自动跟随Car的类型变化,维护成本低得多。
额外小提示
当你把newCar保存后,只需要补充id属性,就能轻松转换成完整的Car类型:
const savedCar: Car = { ...newCar, id: 'car_12345' };
总之,$Pick就是Flow中处理这类“从已有类型中选取部分属性”场景的最优解,放心用就好!
内容的提问来源于stack exchange,提问作者Bibs
相关产品推荐
相关产品推荐

