TS

        TypeScript[4] 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。

      TS 拓展了 JS 的一些功能,解决了 JS 的一些缺点,TS完全兼容JS, TS 是 JS 的超集,可以总结在下面的表格里

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快

TS 的缺点:              

        1:不能被浏览器理解,需要被编译成 JS

        2:有学习成本,写习惯了 JS 的我们要上手需要花时间去理解,而且 TS 中有一些概念还是有点难,比如泛型。

TS基础类型

        boolean 

ts和lua哪个速度快 ts对比js_前端_02

当赋值与定义的不一致,会报错,静态类型语言的优势就体现出来了,可以帮助我们提前发现代码中的错误 ;如下:     

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_03

        number 

ts和lua哪个速度快 ts对比js_赋值_04

        string

ts和lua哪个速度快 ts对比js_开发语言_05

         undefined 和 null 类型

ts和lua哪个速度快 ts对比js_typescript_06

                默认情况下 null 和 undefined 是所有类型的子类型。可以把 null 和 undefined 赋值给 number 类型的变量 ;

ts和lua哪个速度快 ts对比js_开发语言_07

               但是如果指定了 --strictNullChecks 标记,null 和 undefined 只能赋值给 void 和它们各自,不然会报错。 

ts和lua哪个速度快 ts对比js_开发语言_08

    any、unknown 和 void 类型

               any不清楚用什么类型,可以使用 any 类型。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库;

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_09

                注意:在自己定义数据类型时,不建议为any类型,会失去TS含义

        unknown 类型 :当我不知道一个类型具体是什么时,可以使用 unknown 类型

     unknown 类型代表任何类型,它的定义和 any 定义很像,但是它是一个安全类型,使用 unknown 做任何事情都是不合法的。

                比如,这样一个 divide 函数,

ts和lua哪个速度快 ts对比js_赋值_10

ts和lua哪个速度快 ts对比js_typescript_11

ts和lua哪个速度快 ts对比js_typescript_12

         void 

                void类型与 any 类型相反,它表示没有任何类型。

                        比如函数没有明确返回值,默认返回 Void 类型

ts和lua哪个速度快 ts对比js_赋值_13

         never 类型

                never类型表示的是那些永不存在的值的类型。

ts和lua哪个速度快 ts对比js_赋值_14

        数组类型 

ts和lua哪个速度快 ts对比js_赋值_15

                数组里的项写错类型会报错,如下:

ts和lua哪个速度快 ts对比js_开发语言_16

     元组类型

                元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

                

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_17

                写错类型会报错: 

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_18

                越界会报错:

ts和lua哪个速度快 ts对比js_前端_19

              push 一个没有定义的类型,报错:

ts和lua哪个速度快 ts对比js_typescript_20

函数类型

        TS 定义函数类型需要定义输入参数类型和输出类型,输出类型也可以忽略,因为 TS 能够根据返回语句自动推断出返回值类型;

ts和lua哪个速度快 ts对比js_前端_21

        函数没有明确返回值,默认返回 Void 类型 ;

ts和lua哪个速度快 ts对比js_前端_22

        函数表达式写法 ;

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_23

注意可选参数要放在函数入参的最后面,不然会导致编译错误

ts和lua哪个速度快 ts对比js_开发语言_24

         默认参数:默认参数可以放在函数入参的任意位置,不一定时最后面;

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_25

 函数赋值

        在 TS 中函数不能随便赋值,会报错的;

ts和lua哪个速度快 ts对比js_ts和lua哪个速度快_26

 函数重载

        函数重载是指两个函数名称相同,但是参数个数或参数类型不同,他的好处显而易见,不需要把相似功能的函数拆分成多个函数名称不同的函数.

        不同参数类型

ts和lua哪个速度快 ts对比js_前端_27

                         在 TS 中,实现函数重载,需要多次声明这个函数,前几次是函数定义,列出所有的情况,最后一次是函数实现,需要比较宽泛的类型,比如上面的例子就用到了 any

        不同参数个数

ts和lua哪个速度快 ts对比js_赋值_28