1.TypeScript是什么,与JavaScript有什么区别
js是什么
TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统。
js与ts的一些区别
ts 引入了 js 中没有的“类”概念
ts 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。
js没有重载概念,ts有可以重载
ts增加了接口interface、泛型、类、类的多态、继承等
ts对比js基础类型上,增加了 void/never/any/元组/枚举/以及一些高级类型
ts可在编译期间发现错误并纠正,而js只能在运行时发现错误
ts的使用人数趋势
由图可以发现,TpyeScript作为后起之秀,逐年受到更多开发者的青睐,而学习它,也成了前端的一种趋势
2.TypeScript基础
基础类型
-
boolean、number、string
-
undefined、null
-
any、unknown、void
-
never
-
数组类型[]
-
元组类型tuple
其中,never主要用于防御性编程,如果一个函数执行时抛出了异常,那么这个函数永远不存在返回值(因为抛出异常会直接中断程序运行,这使得程序运行不到返回值那一步,即具有不可达的终点,也就永不存在返回了);或者,函数中执行无限循环的代码(死循环),使得程序永远无法运行到函数返回值那一步,永不存在返回。
// 异常
function err(msg: string): never { // OK
throw new Error(msg);
}
// 死循环
function loopForever(): never { // OK
while (true) {};
}
函数类型
ts定义函数类型时要定义输入参数类型和输出类型。其中输入参数支持可选参数和默认参数;输出参数在输出时可以自动推断,没有返回值时,默认为void类型;函数重载:名称相同但参数不同,可以通过重载支持多种类型
// 1.函数声明法
function fun(): string {
return '123'
}
// 2.匿名函数法
let fun2 = function (): number {
return 123
}
// 3.没有返回值的方法
function fun3(): void {
console.log(111);
}
类
定义:写法和JS差不多,增加了一些定义
// 定义类
class Person {
// 公共属性,默认可以不写
public name: string
// 构造函数
constructor(name: string) {
// 初始化name属性
this.name = name
}
}
// 实例化类
const person = new Person('zs')
console.log(person.name) // zs
特点:
-增加了public、private、protected修饰符
-抽象类:
——只能被继承,不能被实例化
——作为基类,抽象方法必须被子类实现
-interface约束类,使用implements关键字
3.关于TypeScript的思考
1.对类型安全的诉求。无论在浏览器还是服务端,前端项目规模越来越大,越来越复杂。而规模越大,对静态类型语言的诉求就越强烈。
2.Typescript是一门支持ES6规范的语言,这套规范是在2015年发布的,它指出了在未来一段时间客户端脚本语言的发展方向,也就是Typescript脚本语言的语法会成为未来一段时间客户端语言的主流语法。并且它是由微软和谷歌两大科技巨头一起维护的。