如何在typescript中实现递归接口?

时间:2018-03-31 06:36:50

标签: typescript

我想为以下对象实现接口。

const test:Test = {
    a: {
        b: {
            c: {
                (d... f... g... recursively),
                keyName: 1
            }
        },
        keyName: 1
    },
    keyName: 1
};

我试着像下面这样做,但是我收到了一个错误。

interface Test {
    [key: string]: Test;
    keyName?: number; => Property 'keyName' of type 'number | undefined' is not assignable to string index type 'Test'.
}

如果你知道,请解决这个问题。 Thansk阅读。 :)

1 个答案:

答案 0 :(得分:0)

是不是定义了一个具有足够自己类型成员的类?

class A {
    public b: A;
    public c: string;
}

然后你可以这样做:

let y: A;
y.b.b.b.b.b.b.b.b.b;
y.b.b.b.b.c;

与任何递归一样,你应该停在某处,这样我就可以使递归属性成为可选项。