1.什么是typescript?
typescript它是JavaScript的一个超集,扩展了 JavaScript 的语法,可以编译成javascript语法。
2.typescript的特点与优势
JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。TypeScript 增加了代码的可读性和可维护性,可以在编译阶段就能发现错误,提高我们编程的效率。
3.typescript的安装
Windows系统可以通过npm install typescript -g来安装typescript 包,mac系统的电脑使用 sudo npm install typescript -g安装,通过tsc index.ts来编译成javascript的文件
4.基本数据类型
typescript 和 javascript的对于变量的申明是有差别的:
let isDone: boolean = false; //typescript申明方式
let isDone=true; // js申明方式
我们会发现在变量的后面加了:boolean,这样做的目的就是限定这个变量只能为boolean类型的数据,
不可以是其他的,但是我们javascript就不会限定,你现在为 true,我也可以改变成Number 类型,string类型等等
下图我们可以看出js文件中申明变量a=true,a然后又等于“abcd”,最后打印出来的就是“abcd”,
但是同样的我们在ts文件中也是如此操作,但是却报错了“Type 'string' is not assignable to type 'boolean'”,意思就是类型“string”不可分配给类型“boolean”,也就是说boolean的变量改变,只能改变成为boolean类型的
同样的我们申明字符串,数字let name: string = "bob";let decLiteral: number = 6;只能指定为字符串和数字类型,修改时也只能修改为对应类型的数据;但是这里要特别说明的是:数字类型的也可以设置为二进制和八进制字面量,例如:let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010;
undefined和null两者各自有自己的类型分别叫做undefined和null。他们本身类型用处不大,申明方式和和字符串,数字一样let u: undefined = undefined; let n: null = null;注意:默认情况下
null和undefined是所有类型的子类型。也就是说字符串,数字等类型的变量的值是可以为null/undefined 例如:let num:number=null/undefined;
5.数组类型
TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组:
let list: number[] = [1, 2, 3];---元素类型+[]
let list: Array = [1, 2, 3];---使用数组泛型,Array<元素类型>
元素类型限制我们数组内部的元素只能是Number类型的
当Number类型的数组中出现字符串时会报错,同时我们运行时也会报错
意思就是类型“string”不可分配给类型“Number”
那么我们如何我们如何让数组,或者变量能够为任何值,或者改变为任何值呢,亦或还不清楚类型的变量指定一个类型?
any类型数据
当我们不知道变量的数据类型是我们可以指定为any类型,同时any类型的数据可以赋值改变为任意其他类型的数据。
申明变量p1位any类型的,我们分别赋值,打印出来的结果分别为12,abc,true也就是说any类型的变量可以赋值为其他类型的变量
同样当我们把数组的元素类型设置为any的时候,那么数组里的元素可以为不同类型的元素
void类型数据
void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void:
function warnUser(): void { console.log("This is my warning message"); }
而且声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null;
类型推论
如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。
let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
这段代码中yFavoriteNumber这个变量虽然没有指定类型,但是在编译时依然会报错
Type 'number' is not assignable to type 'string'
事实上这段代码等价于
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。