各位靓仔靓女,晚上好!我是你们的老朋友,今天跟大家聊聊JavaScript里一些听起来高大上,但实际上很有趣的东西:Dependent Types(依赖类型),Type-Level Programming(类型级别编程),以及Proof Carrying Code(携带证明的代码)。 咱们先来个免责声明:虽然标题里有个“JS Dependent Types (提案)”,但请注意,这玩意儿目前还只是个提案,还在娘胎里没出来呢。所以我们今天讲的更多的是概念性的东西,以及如何在现有的JS环境里“假装”实现一些类似的功能。 一、Dependent Types:类型,不只是类型 啥是Dependent Types?简单来说,就是类型可以依赖于值。 传统的静态类型语言,比如TypeScript,类型是和值分离的。一个变量的类型,比如number,和变量的值,比如5,是独立的。你不能说“一个类型,它的长度等于变量x的值”。 但是Dependent Types就可以!它允许类型依赖于值,从而表达更精细的约束。 举个例子,假设我们要定义一个数组类型,这个数组的长度是固定的,并且依赖于一个变量n。用伪代码 …
继续阅读“JS `Dependent Types` (提案) `Type-Level Programming` 与 `Proof Carrying Code`”