首页 > 解决方案 > 在没有`get`的情况下创建相互引用的常量

问题描述

我正在尝试实现这样的事情:

export const foo: Bla {
  prop: [bar, baz]
}

export const bar: Bla {
  prop: [foo, bar]
}

export const baz: Bla {
  prop: [bar, baz]
}

但是很明显,bar 还没有被定义为 foo 等的定义,所以这是行不通的。我还希望 prop 数组稍后可以通过代码进行编辑,因此 usingget prop() {...}对此不起作用。在其他语言中,您可以使用一些技巧,例如在定义 const 之前声明它(只要您最终定义它),但据我所知,Typescript 似乎不支持类似的东西。有谁知道实现这种定义的方法?

标签: typescript

解决方案


不,没有好的/优雅的方式


在您的示例中,尽管变量是常量,但对象本身是可变的。

通过滥用这一事实,您可以这样做:

export const foo: Bla {}
export const bar: Bla {}
export const baz: Bla {}

foo.prop = [bar, baz]
bar.prop = [foo, bar]
baz.prop = [bar, baz]

当然,要做到这一点,你必须将属性定义propBla可选的,或者类似的东西(你也可以prop在文字中将空数组分配给 s 并将.push值分配给它们;这样你就不必改变你的类型)。


然而,这是一个黑客。“正确”的方法是使用 getter(或惰性 getter)和 setter。


推荐阅读