开发环境搭建:

1.安装node
2.使用npm全局安装typescript: npm i -g typescript
3.创建一个ts文件
4.使用tsc对ts文件进行编译: tsc xxx.ts

基本类型

类型声明
类型声明是TS非常重要的一个特点
通过类型声明可以指定TS中变量(参数、形参)的类型
指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错。
简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
语法:
let变量:类型;
let变量:类型=值;
function fn(参数:类型,参数:类型):类型{
……
}
自动类型判断
TS拥有自动的类型判断机制。
当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型。所以如果你的变量的声明和赋值时同时进行的,可以省略掉类型声明。

联合类型: let b: “male” | “female”; let c:boolean |string; c=true; c=’hello’;
any表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测,不建议使用。
let d: any;(显式的any)
声明变量如果不指定类型,则TS解释器会自动判断变量的类型为any (隐藏的any)。
变量d的类型为any, 它可以赋值给任意变量。

unknown表示未知类型的值,实际上是一个类型类型的any 。unknown类型的变量,不能直接赋值给其他变量。

//类型断言,两种用法
s= e as string;
s=<string>e;

never表示永远不会返回结果。void也是有返回结果。js里面报错的函数,如throw new Error(“报错了”),直接结束,不用有返回结果。

//object表示一个js对象
let a:object;
a={};
a=function(){};

//{}用来指定对象中可以包含哪些属性
//语法:{属性名:属性值,属性名:属性值}
//在属性名后边加上?,表示属性值是可选的
let b:{name:string, age?:number}
let c:{name:string,a?:number, b?:number};
c={name:'猪八戒',a:1,b:2};
//[propName:string]:any表示任意类型的属性
let c:{name:string, [propName:string]:any};

//设置函数结构的类型声明:语法:(形参:类型,形参:类型...)=>返回值类型
let d:(a:number,b:number)=>number;

//数组的类型声明:类型[],或是Array<类型>
//string[]表示字符串数组
let e:string[];
//number[]表示数值类型
let f:number[];
let g:Array<number>

//元组,元组就是固定长度的数组。
//语法:[类型,类型,类型]
let h:[string,string];
h=['hello','abc'];

//enum 枚举
let i:{name:string,gender:string};
i={name:'孙悟空',gender:'男'};

enum Gender{
  Male;
  Female;
}
i={name:'孙悟空',gender:Gender.Male};

//&表示同时
let j:{name:string} & {age:number};
j={name:'孙悟空',age:18};

//类型的别名
type myType=string;
let m:myType.

type myType = 1|2|3|4|5;
let k:myType;
let l:myTpye;

编译选项: