TS
TypeScript[4] 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
TS 拓展了 JS 的一些功能,解决了 JS 的一些缺点,TS完全兼容JS, TS 是 JS 的超集,可以总结在下面的表格里
TS 的缺点:
1:不能被浏览器理解,需要被编译成 JS
2:有学习成本,写习惯了 JS 的我们要上手需要花时间去理解,而且 TS 中有一些概念还是有点难,比如泛型。
TS基础类型
boolean
当赋值与定义的不一致,会报错,静态类型语言的优势就体现出来了,可以帮助我们提前发现代码中的错误 ;如下:
number
string
undefined 和 null 类型
默认情况下 null
和 undefined
是所有类型的子类型。可以把 null 和 undefined 赋值给 number 类型的变量 ;
但是如果指定了 --strictNullChecks
标记,null 和 undefined 只能赋值给 void 和它们各自,不然会报错。
any、unknown 和 void 类型
any:不清楚用什么类型,可以使用 any 类型。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库;
注意:在自己定义数据类型时,不建议为any类型,会失去TS含义
unknown 类型 :当我不知道一个类型具体是什么时,可以使用 unknown
类型
unknown
类型代表任何类型,它的定义和 any
定义很像,但是它是一个安全类型,使用 unknown
做任何事情都是不合法的。
比如,这样一个 divide 函数,
void
void
类型与 any
类型相反,它表示没有任何类型。
比如函数没有明确返回值,默认返回 Void 类型
never 类型
never
类型表示的是那些永不存在的值的类型。
数组类型
数组里的项写错类型会报错,如下:
元组类型
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
写错类型会报错:
越界会报错:
push 一个没有定义的类型,报错:
函数类型
TS 定义函数类型需要定义输入参数类型和输出类型,输出类型也可以忽略,因为 TS 能够根据返回语句自动推断出返回值类型;
函数没有明确返回值,默认返回 Void 类型 ;
函数表达式写法 ;
可选参数 :参数后加个问号,代表这个参数是可选的,即有可无,不强求一定传入这个参数;注意可选参数要放在函数入参的最后面,不然会导致编译错误
默认参数:默认参数可以放在函数入参的任意位置,不一定时最后面;
函数赋值
在 TS 中函数不能随便赋值,会报错的;
函数重载
函数重载是指两个函数名称相同,但是参数个数或参数类型不同,他的好处显而易见,不需要把相似功能的函数拆分成多个函数名称不同的函数.
不同参数类型
在 TS 中,实现函数重载,需要多次声明这个函数,前几次是函数定义,列出所有的情况,最后一次是函数实现,需要比较宽泛的类型,比如上面的例子就用到了 any
不同参数个数