看了一些关于ts类型体操的文章,本文记录学习的一些收获,为之后遗忘的时候重新温习;
关于ts类型体操的一些好的文章:
- ts官网handbook
- 知乎雪碧大佬的入门文章:读懂类型体操:TypeScript 类型元编程基础入门
- type challenges
- 神光的掘金小册
类型体操
ts的类型系统是非常强大的,它不仅仅可以为我们标注类型,本身还支持类型编程,通过ts的type来创建新的type。
类似于高阶函数的概念,用函数去创建函数,ts类型系统支持用类型去做一些运算。
ts支持的type operators包括:
- 泛型
keyof
操作符,typeof
操作符- 条件运算,比如通过extends结合三元运算符,实现条件运算。
T extends P?true : false
- 映射运算,从一个存在的类型中创建一个新的类型。
- 模版运算,通过模版运算符改变
TODO:类型编程有什么作用哪?举几个例子:
几点收获
- ts支持类型空间和值空间,我们编写的代码的类型相关的代码只存在于类型空间,编译为js 代码就不存在了。
- ts类型系统与java等类型是不一样的,java中类型是强绑定的,而ts类型是与结构相关的,表述不好,看下边这段代码就理解了:
typescript
interface dog{
walk:void
}
interface pig{
walk:void
}
function test(animal:dog){
animal.walk()
}
const s
test()