JS和TS的区别

本文探讨了TypeScript作为JavaScript超集的特点,强调了其静态类型系统的优点,如在基础类型如boolean、number、string等方面帮助提前发现错误。同时,文章提到了TS的缺点,包括需要编译成JS以及学习成本。详细介绍了any、unknown、void、never等类型,以及数组、元组、函数类型等高级特性,并讨论了函数重载的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

        不同参数个数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值