TypeScript为何禁用箭头方法?对官方拒绝理由的技术问询
TypeScript类箭头方法语法提议被否决的困惑
将允许在TypeScript中使用箭头方法的提议,因“改变JavaScript语言特性”的理由被否决。仅减少函数声明一个字符的写法(如下方示例中的add2与add3)为何会改变语言?对比TypeScript多年来相对JavaScript的诸多变更,这一理由更令人困惑。
export class Point { constructor(public x: number, public y: number) { this.x = x this.y = y } add1(p: Point): Point { return new Point(this.x + p.x, this.y + p.y) } add2 = (p: Point) => new Point(this.x + p.x, this.y + p.y) add3(p: Point) => new Point(this.x + p.x, this.y + p.y) ...
编辑补充
- 该提议最初在TypeScript官方议题中提出,核心诉求是简化类内箭头函数方法的写法,允许直接采用
方法名(参数) => 函数体的形式,替代当前需要先赋值的写法。 - TypeScript团队在相关议题的评论中给出否决的核心逻辑:这类语法属于对JavaScript核心语法的侵入式扩展,而非单纯的类型系统补充。JavaScript里类的普通方法挂载在原型链上,箭头函数则作为实例属性存在,新增这种简写会模糊二者的语义边界,让开发者混淆方法的归属(原型/实例)。同时TypeScript的设计原则之一是尽量不引入JavaScript本身不具备的语法特性,避免造成语言生态的分裂。
内容的提问来源于stack exchange,提问作者Anton Duzenko
相关产品推荐
相关产品推荐

