Experiment: Making TypeScript Immutable-by-Default
6 months ago
- #Programming
- #TypeScript
- #Immutability
- 作者探索如何让TypeScript默认不可变,类似Rust的处理方式
- 他们尝试通过设置TSConfig中的'noLib'选项,用不可变版本替换TypeScript内置库
- 创建了最小化标准库,在没有内置类型的情况下对基础操作进行类型检查
- 通过定义只读属性和方法,成功实现了不可变数组
- 使用'MutableArray'类型将可变数组作为可选特性引入
- 该概念扩展到'Record'类型,默认不可变并提供了可变变体
- 作者未能实现对未注解普通对象的不可变性强制
- 实验最后呼吁寻找解决方案,使TypeScript中的普通对象默认不可变