开玩笑的,上面是只一个用了TypeScript类型定义的JavaScript写法,我们其实真正想这样做↓↓↓, 也就是使用TS Type解决FIbonacci
import { Fib, Add } from...,有基本的比较, 加法, 循环语法, 所以我们也需要使用类型系统依次实现这三种功能
2.1 加法的实现
为了实现加法, 需要先实现一些工具类型
// 元组长度
type Length<T extends...list.length
return range(n-1, [1, ...list])
}
TypeScript的限制, 没有循环, 只能用递归代替循环, 后面会有几个类似的写法, 记住一点:递归有几个出口...减法有两个思路,列表长度相减求值和数字相减求值
2.3.1 列表减法
默认大减小, 小减大只需要判断下反着来, 然后加个符号就行了, 这里为了简单没有实现,可参考伪代码如下:
// 伪代码
const...n : fib(n - 1) + fib(n - 2);
在TypeScript中,我们使用类型, 其实只是换了一种写法, 用类型函数描述运算, 万变不离其宗~
由于TypeScript递归限制, 并不能求解非常大的项