如何让foo变量保留推断类型同时满足Foo类型约束?
让变量满足类型约束同时保留推断类型的方案
要实现让foo既符合Foo的类型约束,又能保留它被推断出来的{ a: { b: string } }具体类型,最优的方案就是给foo设置推断类型与Foo的交叉类型。这样一来,foo既会被TS识别为具体的{ a: { b: string } }类型,同时又必须满足Foo的约束要求。
示例代码如下:
type Foo = { [k: string]: { [k: string]: string } }; const _foo = { a: { b: 'c' } }; export const foo: typeof _foo & Foo = _foo;
如果对保留交叉类型没有硬性要求,退一步的方案也可以接受:只要确保当foo不符合Foo类型约束时,TypeScript能触发类型错误,那即使foo的类型仅为推断出来的{ a: { b: string } }也是可行的。
内容的提问来源于stack exchange,提问作者Estus Flask
相关产品推荐
相关产品推荐

