如何在TS中描述只有字符串键的递归对象



我想用类型来描述一个任意对象,该对象在每个嵌套级别上只能有string(例如,不能有symbol(键。

所以我想要这样的东西(这个例子不起作用,甚至无效(:

type RecursiveRecord = {
[key: string]:  
RecursiveRecord[key] extends object ? 
RecursiveRecord :     // a nested object, apply the same keys restriction
RecursiveRecord[key], // just a non-object value
}

有什么办法可以实现我的目标吗?

谢谢。

p。S.也许(见评论(我的问题也可以表述为«如何描述与object相反的类型?»。因为在这种情况下,我可以写这样的东西:type RecursiveRecord = { [key: string]: Not<object> | RecursiveRecord };

如果我们使用泛型类型,我们可以描述使用此泛型类型的递归记录:

type RecursiveRecord<T> = { [key: string]: T | RecursiveRecord<T> };
type RecursiveStringRecord = RecursiveRecord<string>;

相关内容

  • 没有找到相关文章