目录
TypeScript含义
是以JavaScript为基础搭建的语言,可以支持任何支持JavaScript的平台上运行、是JavaScript的一个超集,但是不能被JavaScript解析器执行,需要将ts转为js在进行编译。相对于js它新增了类型、支持ES新特性并且添加ES不具备的特性,有丰富的配置选项。
基本类型的定义
定义变量时,可直接声明变量的类型。例如 let a:number = 1。如果变量声明好赋值同时进行时,ts可以自动对变量进行类型检测。可在函数上的参数和返回值进行声明类型。
基本类型
number 数字
任何数字
let a : number;
a = 1;
string 字符串
任何字符串
let a : string = 'hello xiaoxu'
boolean 布尔值
布尔值true或false
let a : boolean = true;
字面量
就是其本身,限制变量的值就是该字面量的值。声明一次后不能再次声明,可以用“|”连接多个类型。
let a = 10;
let b = 'yes' | 'no';
any 任意类型
表示是任意类型,相当于对该变量关闭了TS类型检测。如果声明变量的时候,不指定类型,会自动判断变量的类型为any。并且能直接复制给其他变量。就像JS一样,很不安全。
unknown (安全的any)
let a : unknown;
a = 10;
a = true;
表示未知类型的值,不能直接赋值给其他变量。如果需要调用属性和方法,需要类型断言。
类型断言:可以用来告诉解析器变量的实际类型
let a : string;
b = 'hello xaioxu';
//类型断言的两种方式:
a = b as string; //变量 as 类型
a = <string>b; //<类型>变量
void 没有值(或者undefined)
表示空,以函数为例就表示没有返回值的函数。
function fn() : void {}//返回值为空值
never 不能是任何值
表示永远不会返回结果。
function fn() : never{
throw new Error('报错')
}
object 对象
用 {} 指定对象中可以包含那些属性,语法:{属性:属性值,属性:属性值};
如果想要表示一个属性是可选的,可以在属性后面加一个问号;
let a :{age:number,name?:string};
a = {age:18,name:'小明'};
a = {age:20};
如果想要表示对象中有任意可选的任意类型,可以在{}中加上 [propName:string]:any;
let b : {name:string,[propName:string]:any};
b={name:'小红',gender:'女',age:'19'}
function 函数
设置函数结构的类型声明的语法:(形参:类型,形参:类型)=>返回值;
let a : (n1:number,n2:number)=>number;
a = function(n1:number,n2:number):number{
return n1+n2;
}
array 数组
设置数组结构的类型声明:
//两种方式
//类型[]
let a : string[];
//Array<类型>
let b : Array<number>;
tupe 元组
就是固定长度的数组,并且存储效率比较好。
语法:[类型,类型,类型];
let h : [string,string];
h=['小明','小红'];
enum 枚举
枚举类型可以给数值(例如数字)定义一个名字,提高可读性,而不是使用无意义的数字。
Enum Gender{//定义了一个叫做Gender的枚举
male = 0,
female = 1
}
let a :{name:string,gender:Gender};
i:{
name:'小明',
gender:Gender.male //可读性更高
}
其他
符号 | 用法 |
| 或 | let a : number | string ;(表示变量a可以是数字类型或者字符串类型) |
& 且 | let a : {name:string} & {age:number}; |
类型的别名:可以简化类型的是使用
例如:
type Mytype = 1|2|3|4|5;
let a : Mytype;
a = 1;
a = 2;
a = 6;//×