如何在不自定义类型的情况下将TypeScript对象的b属性设为可选?
不自定义类型将对象属性设为可选的方法
你的代码示例:
let myObj = { a: { value: 1 }, b: { value: 2 } } myObj = { // 如何让b变为可选? a: { value: 123 } }
可以在不自定义类型的前提下实现,借助TypeScript内置工具类型和typeof操作符,有两种常用方式:
方式一:将所有属性转为可选(简单但不精准)
用Partial<typeof myObj>把原对象的所有属性都设为可选,这样重新赋值时可以只提供a:
myObj = { a: { value: 123 } } as Partial<typeof myObj>;
缺点是a也会变成可选属性,如果你只想让b可选,这种方式不够精准。
方式二:精准将b设为可选(推荐)
通过Omit移除b属性,再用Partial把b以可选方式加回来,最终a保持必填,b变为可选:
myObj = { a: { value: 123 } } as Omit<typeof myObj, 'b'> & Partial<Pick<typeof myObj, 'b'>>;
这样既符合需求,又不会影响a的必填性,后续也能正常给b赋值:
myObj = { a: { value: 456 }, b: { value: 789 } };
内容的提问来源于stack exchange,提问作者Florence
相关产品推荐
相关产品推荐

