TypeScript
通过参数类型缩小函数返回值泛型类型
https://github.com/microsoft/TypeScript/issues/33014
在该 issure 完成前的最佳解决方案(workaround)
- 使用函数重载实现外部的可推导返回值类型;
- 在进入控制流分支时 声明返回值类型,通过正确的声明,严格函数体实现时的类型检查;
function depLikeFun(str: "t"): F["t"];
function depLikeFun(str: "f"): F["f"];
function depLikeFun(str: "t" | "f") {
if (str === "t") {
const ret: F[typeof str] = 1;
return ret;
} else {
const ret: F[typeof str] = true as boolean;
return ret;
}
}
Tools
shell 用 js 写
相当于通过 node 来解释脚本,同理应该 ts-node 也可以:
https://www.youtube.com/watch?v=0Gsq5q898Nw
往 shell 的可执行地址中添加相关目录:
添加解释标识:
SICP
checking the primality of an integer n
检查一个数是否是素数(约数只有 1 和 自身)
算 n 是否是素数,也就是算2 ~ n-1 间是否有数的约数
n is prime if and only if n is its own smallest divisor.
function square(x) {
return x * x;
}
function smallest_divisor(n) {
return find_divisor(n, 2);
}
function find_divisor(n, test_divisor) {
return square(test_divisor) > n
? n
: divides(test_divisor, n)
? test_divisor
: find_divisor(n, test_divisor + 1);
}
function divides(a, b) {
return b % a === 0;
}
function is_prime(n) {
return n === smallest_divisor(n);
}
is_prime(42);