递归简单对象的TypeScript类型



我试图构建一个类型来描述"简单对象",这是一个只包含基元类型的对象,其他对象和数组也只包含基基元类型。。。或其他对象和阵列等

type Primitive = string | number | boolean
type SimpleArray = Array<Primitive | SimpleObject | SimpleArray>
type SimpleObject = Record<string, Primitive | SimpleObject | SimpleArray>

但是,有人告诉我,我不能递归地使用SimpleObject类型声明。有没有办法描述这种类型?

您可以通过将Record<string, ...>替换为{ [key: string]: ... }(基本相同(来修复此问题:

type SimpleObject = { [k: string]:  Primitive | SimpleObject | SimpleArray }

顺便说一下,您可以将以上所有内容简化为:

type SimpleObject = string | number | boolean | SimpleObject[] | { [key: string]: SimpleObject };

最新更新