标题:typescript类型定义解析 |青训营笔记

66 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第一天

一、为什么什么是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对我们这些新手小白不友好,里面的内容太难以理解,再说互联网更新换代太快,我觉得还是选一款适合自己的工具吧数据、对象类型、泛型要记得东西很多