这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
1、TS发展历程
2、为什么选择TS
TS与JS的共同点:都属于弱类型语言,也就是说,支持数据类型的隐式转换,而像后端的Java,Python等等不支持隐式类型转换,属于强类型语言
两者的不同点在于:JS是动态语言,在没有使用数据时,数据类型是不可知的,因为它们都用统一的var,let,const作为了标识,数据类型,不清楚到底是用来做字符串类型,数字类型,布尔值,null,还是undefined类型
相比而言,TS为静态类型,即在声明为const类型的同时,也表明了具体的数据类型
使用“ : ”冒号,在后面写出具体的数据类型, 为静态类型语言
TypeScript为JavaScript的超集,支持所有的js语法特性,可以与JS并存,
而且通过渐进式的方法,逐步把JS代码改造成TS代码
3、TS的基本语法
对象类型
在这个案例中,TS实际上最少需要包含4个属性:name,sex,age,jobId
只读属性
readonly jobId: number;
jobId属于只读类型,即在声明之初就写定了值,后期不可以再度修改了,需要在前面添加readonly关键字
可选属性
hobby?: string;
hobby属于可选类型,可写可不写,需要在hobby后面添加“?”,来表示属性类型
任意属性
[key: string]: any;
首先在中括号外面,以冒号为分隔,前面为数据属性,即为string类型,值为任意值
函数类型
图中第一个为JS的函数声明方式,右边的和下面的两种为TS的函数声明方式
下面的TS函数声明方式,不推荐使用,因为这样写有些破坏了函数的结构,看起来不美观,不直接,在函数体声明中定义了函数参数的类型,与返回值的类型
而右边的TS函数声明方式,推荐使用。写法清晰明了,使用interface作为关键字,接口,在函数体内部写明参数的数据类型和返回值的数据类型,
然后在调用时,只需使用冒号来引用函数,使用箭头函数来操作函数即可
interface IMult {
(x: number, y: number);
}
const mult: IMult = (x, y) => x * y;