我要实现以下对象的接口。

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'.
}

如果你知道,请给我解决这个问题。为阅读干杯。:)

最佳答案

定义一个拥有自己类型的成员的类还不够吗?

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;

与任何递归一样,您可能应该在某个地方停止,以便我将recursive属性设置为可选。

09-26 10:45