当前位置: 首页>后端>正文

使用ts比lua好的地方 ts 和

上一篇文末介绍到Ts程序代码与编译过后的JS文件的区别异同:

js代码:

使用ts比lua好的地方 ts 和,使用ts比lua好的地方 ts 和_面向对象,第1张

Ts代码:

使用ts比lua好的地方 ts 和,使用ts比lua好的地方 ts 和_原生js_02,第2张

代码中最明显的区别就是Ts在定义字符串前,多了一个String.
这就是其中最大的不同:TS必须指定数据类型
js有的类型

boolean类型、number类型、string类型、array类型、undefined、null

ts多出的类型

tuple类型(元组类型)、enum类型(枚举类型)、any类型(任意类型)

特别的类型

void类型(没有任何类型)表示定义方法没有返回值
never类型:是其他类型(包括null和undefined)的子类型,代表从不会出现的值这意味着声明never变量只能被never类型所赋值

typescript 特点
相较于js(ES6+), ts的基础有以下几大特点

  • ts是js的超集,即你可以在ts中使用原生js语法。
  • ts需要静态编译,它提供了强类型与更多面向对象的内容。
  • ts最终仍要编译为弱类型,基于对象的原生的js,再运行。故ts相较java/C#这样天生面向对象语言是有区别和局限的
  • ts是由微软牵头主导的,其语法风格与概念主要来自C#

JS创建数组:

使用ts比lua好的地方 ts 和,使用ts比lua好的地方 ts 和_强类型_03,第3张

TS创建数组:

两种方式

使用ts比lua好的地方 ts 和,使用ts比lua好的地方 ts 和_使用ts比lua好的地方_04,第4张

函数声明的不同:

JS ES5声明函数

function run3(){
            return 'run'
        }
        // es5匿名函数
        var run4 = function(){
            return 'run'
        }

TS声明函数:

// ts函数声明
   function run5():string{
        return 'run'
    }
    // ts匿名函数
    var run6 = function():number{
        return 123
    }

由于TS目前了解的内容还不够多,在具体使用上的区别还多很多需要归纳总结和学习。

但也是因为ECMA标准的进化,很多ts的专属特性已在原生js中落地,其中包括但不限于:

let/const 基于块级作用域的变量声明
lambda(箭头函数)
class 类
所以,除强类型与泛型等从C#引入的面向对象特性,js与ts的差异已基本被抹平。

TS的局限

ts是js的超集,这意味着你在ts中写js是完全兼容的,这降低了ts的学习和使用门槛,保留了灵活性,但同时,ts的纯洁性无法保证。
程序是否加入类型声明,是否使用面向对象完全取决于开发者本身,而这种过分的宽容很不利于团队合作的复杂长周期开发。
如果不对ts项目进行严格的代码规范,那么使用ts非但不能提高项目的安全性和严谨性,反而会给自己挖很多坑。



https://www.xamrdz.com/backend/38u1942310.html

相关文章: