TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。
首先总结一句话ts是js的超集,这说明ts可以兼容js的语法,大大降低了门槛(哈哈哈)。先说一下我对ts的看法,因为我本是前后端都在使用,感觉ts更像java,比js“强”了许多。
TypeScript和JavaScript的区别
1、数据类型
js的类型:
代码语言:javascript复制boolean类型、number类型、string类型、array类型、undefined、null
复制
ts的类型(在js的类型上还包括)
代码语言:javascript复制tuple类型(元组类型)、enum类型(枚举类型)、any类型(任意类型)
复制
特别的类型
代码语言:javascript复制void类型(没有任何类型)表示定义方法没有返回值
never类型:是其他类型(包括null和undefined)的子类型,代表从不会出现的值这意味着声明never变量只能被never类型所赋值
复制
关于never类型的详细解释可以看一下vue的作者尤雨溪的回答:TypeScript中的never类型具体有什么用?
需要提醒的是在js中,我们初始化一个对象时(或者称之为数据)时不需要强调他的类型,无论是数组还是字符串,初始化时都可以
代码语言:javascript复制let a = '';
let b = [];
复制
但是在ts中需要指定数据类型
代码语言:javascript复制let a:string = 'abc';
let b:number[] = [1, 2, 3];
let c:Array<number> = [1, 2, 3];
复制
是不是更像java了···
2、函数返回值
在js中
代码语言:javascript复制function getName() {
return '张三'
}
复制
在ts中
代码语言:javascript复制function getName():string{
return '张三'
}
复制
在ts中需要声明函数返回值的类型
并且,因为ES6的原因,ts的许多标准在js中也已经实现,比如说:
let/const关键字; lambda表达式(箭头函数); class类 所以,除强类型与泛型等从C#引入的面向对象特性,js与ts的差异已基本被抹平(当然,也只是以为个人的知识面有限)。
目前的话,还在处于学习状态,如果有疑问或者意见,可以留言评论,最后希望大家一起学习交流,一起进步!