TypeScript中能否通过对象的一个属性计算另一个属性的值?
TypeScript常量对象内部引用属性的问题
首先明确回答:不行,你给出的示例代码会直接报错。因为在对象字面量的初始化阶段,当前对象还未完成创建,VAL1在这个作用域中属于未定义的标识符,JavaScript/TypeScript无法识别它。
可行的解决方案
方案1:先单独定义基础常量,再组装对象
把需要复用的常量提取到对象外部,再在对象中引用:
const VAL1 = 'val1'; export const AppConstants = { VAL1, VAL2: VAL1 + 'val2' };
方案2:使用getter属性
通过定义getter方法,在访问属性时动态引用同对象的其他属性,能保持属性的关联性:
export const AppConstants = { VAL1: 'val1', get VAL2() { return this.VAL1 + 'val2'; } };
注意:此时VAL2是一个访问器属性,每次访问都会执行getter函数计算值,但对于常量场景来说,这个开销几乎可以忽略。
内容的提问来源于stack exchange,提问作者masum7
相关产品推荐
相关产品推荐

