TypeScript 语法是否可能与 EMCAScript 冲突?
Is it possible that TypeScript syntax conflict with EMCAScript?
Typescript 曾经说过“TypeScript 是 JavaScript 的类型化超集”。
但是如果 ECMAScript 添加一些新语法,与 TypeScript 现有语法冲突,TypeScript 和 JavaScript 之间的 'superset' 关系将被打破。
会这样吗?
例如:TypesScript 有参数装饰器语法,如果 ECMASript 将来也添加参数装饰器语法,但是装饰器函数有不同的参数。
Will this happen?
没有人可以预测未来,但关于装饰器,请注意 TypeScript decorators documentation:
NOTE: Decorators are an experimental feature that may change in future releases.
事实上,我们知道 TypeScript 的当前装饰器将不兼容 JavaScript's own if/when 他们已经敲定:TypeScript 的装饰器基于未能获得共识的早期版本的提案来自 TC39,此后进行了广泛的返工(至少两次)。但是 TypeScript 已经有了 experimentalDecorators
标志来处理这个问题。最终,如果您没有设置该标志但使用装饰器语法,您将使用 JavaScript 自己的装饰器语法。如果您确实设置了标志,则您使用的是 TypeScript 当前形式的装饰器。
但是那(或其他轻微不兼容的示例¹)并不一定意味着“TypeScript 是 JavaScript 的类型化超集”这句话的 意义 是错了,只是实际情况比总体概念和目标更复杂、更微妙。
¹ 我不记得具体的例子了,但是 IIRC 它涉及在调用函数时提供显式类型参数(或者它是旧的 angle-bracket 形式的类型断言?)在一些非常有限的边缘发生冲突less-than 运算符的案例 <
.
Typescript 曾经说过“TypeScript 是 JavaScript 的类型化超集”。
但是如果 ECMAScript 添加一些新语法,与 TypeScript 现有语法冲突,TypeScript 和 JavaScript 之间的 'superset' 关系将被打破。
会这样吗?
例如:TypesScript 有参数装饰器语法,如果 ECMASript 将来也添加参数装饰器语法,但是装饰器函数有不同的参数。
Will this happen?
没有人可以预测未来,但关于装饰器,请注意 TypeScript decorators documentation:
NOTE: Decorators are an experimental feature that may change in future releases.
事实上,我们知道 TypeScript 的当前装饰器将不兼容 JavaScript's own if/when 他们已经敲定:TypeScript 的装饰器基于未能获得共识的早期版本的提案来自 TC39,此后进行了广泛的返工(至少两次)。但是 TypeScript 已经有了 experimentalDecorators
标志来处理这个问题。最终,如果您没有设置该标志但使用装饰器语法,您将使用 JavaScript 自己的装饰器语法。如果您确实设置了标志,则您使用的是 TypeScript 当前形式的装饰器。
但是那(或其他轻微不兼容的示例¹)并不一定意味着“TypeScript 是 JavaScript 的类型化超集”这句话的 意义 是错了,只是实际情况比总体概念和目标更复杂、更微妙。
¹ 我不记得具体的例子了,但是 IIRC 它涉及在调用函数时提供显式类型参数(或者它是旧的 angle-bracket 形式的类型断言?)在一些非常有限的边缘发生冲突less-than 运算符的案例 <
.