为什么';t typescript编译器是否警告使用变量重写getter?

为什么';t typescript编译器是否警告使用变量重写getter?,typescript,Typescript,如果我用变量重写getter,我会得到运行时错误。以下代码编译时没有任何警告或错误(对于ES5+): 但是,运行编译后的JS会导致: Uncaught TypeError: Cannot set property foo of #<Parent> which has only a getter at new Child uncaughttypeerror:无法设置#的属性foo,该属性只有一个getter 初生子女 我不能说为什么tsc没有出错,但我可以告诉你,这是一个有趣

如果我用变量重写getter,我会得到运行时错误。以下代码编译时没有任何警告或错误(对于ES5+):

但是,运行编译后的JS会导致:

Uncaught TypeError: Cannot set property foo of #<Parent> which has only a getter
    at new Child
uncaughttypeerror:无法设置#的属性foo,该属性只有一个getter
初生子女

我不能说为什么
tsc
没有出错,但我可以告诉你,这是一个有趣的地方,TypeScript和工作方式不同。TypeScript使用[[Set]]语义(本质上是赋值)在子类中创建公共属性;JavaScript的类字段建议使用[[DefineProperty]]语义。除其他事项外,这意味着JS版本的这项技术工作得很好,用数据属性取代了基本的
foo
accessor:(随着提案的进展,这是许多讨论的主题。)
Uncaught TypeError: Cannot set property foo of #<Parent> which has only a getter
    at new Child