嵌套对象的打字稿限制

时间:2018-07-25 08:02:01

标签: typescript

我有以下通用类型定义:

export interface genericParameter {
    [k: string]: any
}

是否存在一种巧妙的方法来限制此类签名分配嵌套对象?例如,我很乐意接受这种类型:

{
  prop1: 'val1',
  prop2: 123,
}

但不是这样:

{
  Obj1: {prop1: 'val1'},
  Obj2: {prop2: 123},
}

感谢您的帮助!

---编辑---

考虑以下事项:

[k: string]: string | number | /* unmanageable list */

我猜似乎不是一个选择

1 个答案:

答案 0 :(得分:2)

没有办法告诉打字稿不能为给定类型(总之没有条件式和函数)。不过,在这种情况下,基本类型的列表很短,因此我们可以枚举联合中允许的类型

export interface genericParameter {
    [k: string]: number | string | boolean
}

修改

正如@ tj-crowder指出的那样,如果要在许多地方使用此类型,则可能需要为联合声明一个类型别名(尤其是,随着添加{ {1}})

BigInt