递归的对象
我们来看一段代码:
let foo:any = {};
let bar = {
foo
}
foo.bar=bar;
将上述代码在chrome控制台打印,如下图所示,我们会发现它是一个递归的对象,即能够无线地 foo.bar.foo.bar……
当我们在编码的过程中遇到类似场景,我们期望的体验是编辑器能够一直有代码提示,但是实际上我们输入 foo. 之后 VSCode 并没有给出提示。
当遇到这类场景的时候,我们就需要用到 interface 来声明递归结构。如下:
interface Foo {
bar: {
foo: Foo
}
}
let foo: Foo;
let bar = {
foo
}
foo.bar = bar;
这个时候 VSCode 就会按照预期进行正确的代码提示,如下图:
MMO补充
这种写法没有代码提示
这种写法有代码提示