概念
类型定义
let myName: string = 'liaowq'
let myAge: number = 28
let isDone: boolean = false
let u: undefined = undefined
let n: null = null
function sayHi(): void{
console.log('hello world')
}
let something: any = 222
接口
赋值的时候,变量的形状必须和接口的形状保持一致
interface Person {
name: string
age?: number
}
let tom: Person = {
name: 'Liaowq',
// age: 28
}
那么我想接口允许有任意属性呢?可以使用以下方式:
interface Person {
name: string
age?: number
[propName: string]: string | number
}
let tom: Person = {
name: 'Liaowq',
age: 28,
gender: 'male'
}
泛型
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
其实,简单的理解,泛型就是泛指的类型。
举个例子
实现一个函数 createArray
,它可以创建一个指定长度的数组,同时每一项都填充一个默认值
function createArray<T>(length: number, value: T): Array<T> {
let result: T[] = [];
for (let i = 0; i < length; i++) {
result[i] = value;
}
return result;
}
createArray<string>(3, 'x');
createArray<number>(3, 3);
枚举
枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等,值是固定且在一定范围。
enum Status {
OFFLINE,
ONLINE,
DELETEDA
}
枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射:
enum Status {
OFFLINE,
ONLINE,
DELETED
}
Status[0] = 'OFFLINE' // true
Status[1] = 'ONLINE' // true
Status[2] = 'DELETED' // true
Status['OFFLINE'] = 0 // true
Status['ONLINE'] = 1 // true
Status['DELETED'] = 2 // true