Typescript学习(一)|青训营笔记

54 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第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

接口可以继承,可以单继承,也可以多继承;