大家好,我是待兔,从2012年毕业到现在,已经有10年以上的研发工作经验了,我曾就职过新浪,搜狐等大厂,从最初做C/C++到后来做安卓开发,再后来接触Vue以及到最后做了一个技术社区 www.helloworld.net
,中间经过过几次技术转型,其实也不算是技术转型,只是工作中有幸要用到这些技术,不得不去学习新的东西。
在写 www.helloworld.net
的过程以及之前的负责的前端项目中,我深深的体会到 javascript
的种种弊端与不爽,尤其是我之前是写过 c/c++
,java
, go
等这些强类型语言,对javascript
这种弱类型的语言在易用的同时,它的缺点更是让人印象深刻,尤其是刚开始用的时候,简直抓狂
场景一、你调用一个别人写的函数,但是很不幸这个家没有留下任何注释,你只能硬着头皮看它里面的逻辑
场景二、明明已经定义好了接口,但是一联调就会报错 "typeerror"。
场景三、你修改了一个底层类,但是却不知道这个类有多少引用。
javascript
对变量的类型比较宽容,他不会要求你声明变量时指定变量的类型。
所以普遍前端开发者都会缺少 "类型思维"。
没有类型的语言其实是不利于大型项目的开发的。
好消息是:我们现在有了 TypeScript
,
TypeScript简介
TypeScript 是由 C#语言的创始人 Anders Hejlsberg 设计的一种编程语言,设计的初衷就是为了帮助 JavaScript 的开发人员能像类似高级语言c#
,Java
那样编写代码,比如使用高级语言的强类型、面向对象、语法检查,代码编译等特点。
TypeScript
包含一个编译器,可以将用TypeScript 编写的代码转换为原生的 JavaScript
。
TypeScript
目前最新的版本是 4.x 了,是目前微软最好的产品之一,现在完全免费并且使用 Apache 协议开源了 TypeScript
,并成为社区很活跃的框架之一。连谷歌这样的死对头,也拥抱 TypeScript
,在 Angular 2.0 版本就开始集成 TypeScript
,如果你不学 TypeScript
,Angular 这个框架就无法使用。目前 React
、Vue
在未来的版本都在考虑集成 TypeScript
。在可以预计的未来,如果还不开始学习 TypeScript
,我们就不能使用这些框架的新特性了。
TypeScript有哪些好处
静态类型的好处到处都有说,这里就不说得太详细了,随便列一点。
- 杜绝手误导致的变量名写错。
- 自动完成。
- 重构支持。
- 类型可以一定程度上充当文档
对我来说最有用的就是这几点,特别是自动完成。
本人天生脑容量小,难以驾驭动态类型语言。
TypeScript本质
TypeScript 与 JavaScript
本质并无区别,可以将 TypeScipt 理解为是一个添加了类型注解的 JavaScript
,比如 const name = "tom",它同时符合 TypeScript
和 JavaScript
的语法,有点类似 c
语言 和 c++
TypeScript 更加可靠
因为有了类型,代码也会变得更好维护,尤其是上面的3个场景
- 场景一、你调用一个别人写的函数,但是很不幸这个家没有留下任何注释,你只能硬着头皮看它里面的逻辑
- 场景二、明明已经定义好了接口,但是一联调就会报错 "typeerror"。
- 场景三、你修改了一个底层类,但是却不知道这个类有多少引用。
面向接口编程
编写 TypeScript 类型注解,其实本质就是接口设计。
我们用 TypeScript
设计一个 React
组件示例,从中我们很容易了解组件接收数据的结构和类型,并清楚地知道如何在组件内部编写安全稳定的 JSX 代码。
interface IBlogInfo{
/** 博客 id */
id: number;
/** 博客标题 */
title: string;
/** 博客简介 */
desc?: string;
}
function BlogInfo(props: IBlogInfo) {
...
}
TypeScript 极大可能改变你的思维方式,其实写过强类型语言的人都有这样一个习惯,就是你写任何函数或者类之前,者需要先想好函数里面有哪些参数,每个参数是什么类型,比如写一个类,要知道类里面有哪些字段,每个字段都是什么类型,这些都是提前想好的,从而逐渐养成一个好习惯。这显然可以减少不必要的代码重构,从而大大提升编码效率。
TypeScript 正成为主流
现在越来越多的公司都把 javascript
写的项目 转成了 TypeScript
来写,最近新出的 vue3.0
,也完全用TypeScript
来进行重写了,而且还有 Microsoft、Google 这两家国际大厂做背书
学习TypeScript需要有好的学习方式
其实不管学习什么技术 ,都需要一个好的学习方法
本专栏就是从0开始一步一步的带你走入 typescript
的世界