我想用类型来描述一个任意对象,该对象在每个嵌套级别上只能有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>;