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