如何描述确保嵌套对象具有特定属性的类型

时间:2018-09-24 14:23:50

标签: typescript

基本上,我想做的是检查属性a是否存在于层次结构的每个对象中

{
  a: string
  key1: {
   a: string
   subkey1: {
    a: string
    k: number
   }
  }
 }

我尝试了[key: string]: ContainsA | any;之类的几种方法,但是它太弱了。

1 个答案:

答案 0 :(得分:1)

您的想法正确,但是您需要使类型定义递归:

interface ContainsA { 
    a: string;
    [key: string]:
        // Add any other leaf types that aren't required to contain `a` here.
        | string  // `a` itself
        | number  // `k`
        | ContainsA;
}