类型系统的五十年设计博弈:为什么每个选择都意味着放弃

1960年代,Bertrand Russell为了解决集合论悖论而提出类型理论时,大概没想到这个概念会在六十年后成为程序员日常争论的焦点。今天,每一个新编程语言的诞生都伴随着同样的灵魂拷问:静态类型还是动态类型?结构化还是名义?类型擦除还是单态化? ...

11 min · 5482 words

类型推断的错误消息为何如此难懂:从统一算法到错误定位的四十年迷局

一位TypeScript开发者在重构代码时遇到了这样一个错误: Type 'string' is not assignable to type 'number'. 错误指向了一个看似完全正确的函数调用。他检查了函数签名,检查了传入的参数类型,甚至检查了调用链上的每一个函数,花了整整两个小时才找到问题的根源——一个在文件另一端、三百行之外的对象属性赋值。 ...

9 min · 4270 words