这是我参与「第四届青训营 」笔记创作活动的第4天
TypeScript 是 JavaScript 的一个超集
js和ts的区别:
TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,支持与JavaScript共存,TypeScript 通过类型注解提供编译时的静态类型检查。
TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。
为什么是Typescript?
可读性增强:基于语法解析TS文档,ide增强; 可维护性增强:可以在编译阶段暴露大部分错误; 多人合作的大型项目中,稳定性更好,效率更高; 兼容所有JS特性,支持与JS共存; 支持渐进式引入和升级;
基本语法:
变量
在变量后通过冒号指定变量的具体类型;
const hello : string = "Hello World!"
ts部分新增基础类型
任意类型、元祖、枚举、void类型、never类型 元祖:元组类型用来表示已知元素数量和类型的数组
let x: [string, number];
枚举类型:定义数值集合
enum Color {Red, Green, Blue};
let c: Color = Color.Blue
void类型表示没有返回值的函数类型
never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
联合类型
通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。
var val:string|number
val只能被设置为string和number类型;
可以将联合类型作为函数的形参类型设置;
也可以将数组的类型设置为联合类型;
var arr:number[]|string[];
function getArr(arr:number[]|string[];)
接口
接口是一系列抽象方法的声明,需要由具体的类去实现,通过调用接口中的抽象方法,让具体的类执行具体的方法。
interface interface_name {
}
interface IPerson {
firstName:string, lastName:string, sayHi: ()=>string
}
var customer:IPerson = {
firstName:"Tom", lastName:"Hanks", sayHi: ():string =>{return "Hi there"}
}
利用接口设置数组的索引值为字符串
interface ages {
[index:string]:number
}
var agelist:ages;
agelist["runoob"] = 15
接口可以继承,可以单继承,也可以多继承;