如何在TypeScript中定义值为数字或嵌套对象的Obj接口?
TypeScript递归嵌套对象接口定义方案
你需要定义递归类型的接口,让属性值既可以是number,也可以是同结构的嵌套对象。直接修改Obj接口如下:
interface Obj { [key: string]: number | Obj; } const returnNestedProp = (obj: Obj) => { return obj?.a?.b; }; // 所有测试场景均符合类型检查 console.log(returnNestedProp({ a: 1 })); console.log(returnNestedProp({ a: { b: { c: 3 } } })); console.log(returnNestedProp({ b: { a: 1 } })); console.log(returnNestedProp({ a: { b: 2 } }));
说明
- 使用
number | Obj联合类型,意味着每个对象属性的值要么是数字,要么是另一个符合Obj结构的对象,支持任意层级的嵌套。 - TypeScript允许接口递归引用,这样就能完美匹配你给出的所有测试用例的对象结构。
内容的提问来源于stack exchange,提问作者zenVizen
相关产品推荐
相关产品推荐

