这是我参与「第五届青训营 」伴学笔记创作活动的第一天
一、为什么什么是TypeScript?
javaScript是动态类型语言在执行阶段去进行类型的匹配 typeScript是静态类型语言类似python,java先进行编译流程,编译完之后在使用编译后的成果再进行执行
他俩都是弱类型语言可以进行类型转换当运行字符串的1和数字型的1相加的时候Javascript可以通过
好处: 1.会增强代码的可读性,基于TSDoc的语法解析,ide能力增强
2.维护性增强,会在提前暴露错误在编译阶段例如:语法的拼写错误,类型匹配错误字符串传给函数
3.在多人合作的大型项目中,获得更好的稳定性和开发效率更适合现代项目的开发
js的超集:兼容所有javascirpt特性,支持共存,和渐进式的改造引入和升级 推荐使用Visual Studio Code编辑器
二、avascript和typescript基本数据类型对比
/字符串/ const q='string'; const q: string ='string';
/数字/ const w =1 ; const w: number=1;
typescript自动类型推断:定义类型变量的变量名后加一个冒号,冒号后面加上类型名称(类型名称直接翻译的)
对象类型 对象:自定义类型大写I开头
interface接口来定义类型名称{ 只读属性类似于id 声明readonly 可选属性 ? :定义该属性可以不存在 任意属性[key:string]:any;向上key的属性不确定, }在重新使用对象的时候要注意属性
三、如何添加类型声明
function函数类型
1.直接在函数上进行类型补充给函数变量赋值一个函数的类型声明 入参在参数后加一个冒号,冒号后有类型 出参返回值类型是在函数右括号后加上冒号接上返回值类型
2.定义了一个函数类型,再把类型赋值给一个变量
四、函数重载
getdate函数实现是接收type
type是'string'类型时返回一个时间的字符串 type是'date'回返回一个date对象 (timestamp为可缺省参数timestamp?:)
五、数组类型
type 名称=类型[];
type 名称=Array关键字<数组元素的类型>;
type 名称=[类型1,类型2];
interface 名称{ [key:类型]:any }
泛型不预先指定具体的类型,而是在使用的时候再指定类型的一种特性
type IGetRepeatArrR = (target:T) => T[]; 泛型T,然后target返回一个T的数组
在泛型的声明后加extends 类型 为泛型约束
通过type关键字定义了IObjArr的别名类型 type IObjArr = Array<{.......}>
type可以指定字符串/数字/字面量
type IDomTag ='html'|'body'|'div'|'span';必须为html或body、div、span中的一种
总结: 我感觉typeScript对我们这些新手小白不友好,里面的内容太难以理解,再说互联网更新换代太快,我觉得还是选一款适合自己的工具吧数据、对象类型、泛型要记得东西很多