TypeScript学习笔记
一、简介
TypeScript 是一种强类型的编程语言,它起源于使用JavaScript开发的大型项目,由于JavaScript本身属于弱类型语言的局限性,难以胜任和维护大型项目的开发工作。因此微软于2012年推出了TypeScript ,使得其能够胜任开发大型项目
二、变量声明
旧 JS 是弱类型语言,一个变量先后可以保存不同类型的数据,这样是不可靠的;typescript 规定声明变量必须用”: 数据类型”格式。
let a:number= 10;
let b:string="变量声明";
变量的数据类型可以是 boolean、number、string、数组,还有 any,any 表示可以匹配任何数据类型;当类型为数组时有两种写法:
let 数组名: 数据类型[]=[值1, 值2, ...]
let 数组名: Array<数据类型>=[值1, 值2,...]
let arr1: string[ ]= ["str1","str2","str3"];
let arr2 : Array<number>=[1,2,3,4, 5,6];
//匹配任何数据类型
let arr3: any[]= [1,2,"str" ];
需要注意 TypeScript 是强类型语言,即使首次定义变量时没有用 : 指定变量的数据类型, TypeScript也会自动将变量第一次赋值时的变量值类型,作为当前变量的数据类型。
三、函数
语法:
function 函数名(
形参1:数据类型, 形参2:数据类型, ...
):返回值类型 {
...
return 返回值
}
四、重载
在旧 js 中,重载定义一个函数,在函数内根据传入的参数不同执行不同的逻辑;而在 TS 中:先定义多个形参列表不同的同名函数声明,且先不实现函数体,
function 函数名():void;
function 函数名(形参:数据类型):void;
//void代表这个函数,没有返回值
//如果函数有返回值,必须将void改为返回值的具体类型
其次定义一个可实际执行多种任务的函数来支持上方多种重载的情况
function 函数名(){
}
五、class
class 类型的定义:
class 类型名{
属性名1:数据类型=初始值;
属性名2:数据类型=初始值;
constructor(形参1:数据类型, 形参2:数据类型){
this.属性名1=形参1;
this.属性名2=形参2;
}
方法名():数据类型{ ... }
}
六、接口
如果希望开发人员一定要按照架构师的要求实现程序结构时,都用接口来规范。首先是定义接口:
interface I接口名{
规定的属性名: 类型;
规定的方法名(参数:数据类型):返回值;
}
接下来“实现接口”:
class 类型名 implements I接口名{
//必须包含接口中规定的属性和方法
}