这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
今天我们来学习TypeScript,以下仅为个人的学习记录随笔,有错误的地方请多多包涵
TypeScript是什么
俗话说知其然知其所以然,所以我们先来了解一下TypeScript的发展历史。2012年10月份由微软发布,随后不断的迭代更新,逐渐被主流的前端开发框架所接受,例如vue3官方支持TypeScript
为什么是TypeScript
我们所熟悉的JavaScript是一种动态弱类型语言,而TS则恰恰相反,是一种静态弱类型语言。我们所编写的JS代码没有编译过程,如果有错误会在执行过程中才会报错,但Python和TS这种是需要编译的,有些错误在编译的时候就会发现,大大节约了我们的开发成本。那么弱类型又是什么意思呢?弱类型其实就是数据类型的要求没有那么严格,例如JS中数字和字符串是可以相加的,会默认进行类型转换。
说了这么多,TS其实是JS的一个超集,包含所有JS特性,支持共存,也支持渐进式引入宇升级,而TS的的好处在于其可读性的增强,可维护性增强,多人合作的大型项目中,获得更好的稳定性和开发效率
PS:怎么写TypeScript呢
这里强烈推荐VS Code,简约大方,功能强大
TypeScript的基本语法
基本数据类型
初步学习JS时,我们都是先学JS的基本数据类型,例如Number String等等,而在TypeScript中也是一样的,只不过在声明时需要在后面加上一个冒号,说明一下这个数据的类型
对象类型
和基础数据类型相似,也是在后面加上冒号,一般都是自定义类型。在一般情况下,自定义类型的首字母大写。我们使用interface关键字声明基础类型,例如
interface TiTan {
readonly name:string;
weapon:string;
polit?:string;
}
这样就声明了一个泰坦类型,拥有名字和武器这两个属性,都是字符串类型,如果你给这两个属性赋了其他值则会报错,而名字设置为只读,在初始化后则不能更改,而polit属性是一个可选属性,你可以选择给这个属性赋值也可以不赋值,但其他属性不赋值也是会报错的
函数类型
还是类似的加上冒号,声明函数的参数类型和返回值类型,这里用一张图更好理解
数组类型
说到数组又不得不说道元组这个东西,元组其实是长度固定的数组
声明 let a =[string,number]
长度就是声明的时候的长度,类型必须一一对应。声明的方法还有以下几种
泛型
根据你传入的类型来决定最后是什么类型,不预先指定类型,我们一般统一使用T来代表这个类型
type IGetRepeatArrR = <T>( target: T) => T[];
这里传入的是什么类型,T就是什么类型,这就是泛型。
有时候我们还需要约束一下泛型,比如说这个泛型具有length属性,可以写一个接口,有length属性,然后让泛型继承他
类型断言
这个作用相当于“TS,相信我”,程序员手动给一个变量下类型,让ts接受看似不合理的赋值,例如上面的使用断言就是s = a as string 或者s = a 这两种方式可以断言。 还有一种的断言是const断言 简单来说就是把被断言的变量全部变成readOnly,或者说直接变成字面量类型,就不可改了
标题:TypeScript 的发展与基本语法 - 掘金