导读:类型的重要性
欢迎来到《Typescript必会技能》,课程名字比较低调,但是干货满满。
类型是什么?
1. 人类的思考方式
2. 错误检查的利器
类型是人类的思考方式
类型本质是思考什么是什么?
![image-20210711180611083]
狗可以叫怎么理解?
【面向对象】
对象狗拥有bark方法
【函数式】
Dog is Barkable\<T\>
划重点:**类型的思维方式在函数式和面向对象是高度统一的。**
类型的思考是怎样的思考?
1. 分类思维:什么【】是【】?
- Integer/String is Comparable
- Array is Enumerable
- React.ComponentType is not React.ComponentClass
type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>
2. 映射
- 可以转换:ComponentClass -> Component
- 因此:Array\<ComponentClass\> -> Array\<Component\>
[...something].map(...)
3. 演化
- 开始时:React组件是ComponentClass ,现在是ElementType,因为ElementType不仅仅有ComponentClass
- 开始时:Skedo渲染的基本单位是Node,后来是Node | LinkedNode, 再后来是NodeType
划重点:通过类型的演进不断让系统进化。这个是领域驱动开发最核心的理念。
类型是检查的利器
每次类型检查都可以帮助减少错误。
帮助减少程序的错误
function run(cmd : Cmd){
}
// 报错
run('ls /')
某同学:就这?
思考一个模型:每次函数调用检查一次类型,每次检查有10%的几率找到bug,那么10次函数调用是?
p = 1- (1 - 0.1) ^ 10 = 65.13%
系统中那么多函数调用,如果每个函数都有类型?
划重点:设计的好的类型系统可以做到编译时检查通过既上线。用Typescript的通用目标。
总结
- 类型是人的思考方式,类型帮助人思考(好的程序设计帮助人更好的思考)
- 类型帮助检查错误(减少90%以上的运行时Bug,编写完即上线)
- 类型帮助系统演进
以上3点就是我们用Typescript最核心的原因。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通