typescript - 在没有`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 似乎不支持类似的东西。有谁知道实现这种定义的方法?
解决方案
不,没有好的/优雅的方式。
在您的示例中,尽管变量是常量,但对象本身是可变的。
通过滥用这一事实,您可以这样做:
export const foo: Bla {}
export const bar: Bla {}
export const baz: Bla {}
foo.prop = [bar, baz]
bar.prop = [foo, bar]
baz.prop = [bar, baz]
当然,要做到这一点,你必须将属性定义prop
为Bla
可选的,或者类似的东西(你也可以prop
在文字中将空数组分配给 s 并将.push
值分配给它们;这样你就不必改变你的类型)。
然而,这是一个黑客。“正确”的方法是使用 getter(或惰性 getter)和 setter。
推荐阅读
- node.js - Angular 5:无法读取未定义的属性“订阅”
- javascript - 从 Toastr 追加
- php - 使用有效密钥的 AES 256 ECB 解密返回奇怪/字符
- python - 如果数据库中已存在索引,如何向我的 slug 添加索引?
- ios - `NSMigrationManager`的默认源获取`fetchRequestForSourceEntityNamed:predicateString:`在哪里定义?
- scala - 偏斜数据的自定义分区器
- python - Python 类 __str__ 只返回一行字典
- angular - 更改 Moment 变量的小时数时,this.moment.hours() 不是函数错误
- php - 在评论中用名称替换 id 而不替换错误的大小写
- c++ - 处理自定义 Qt 小部件中的输入事件