TypeScript:Enum枚举和泛型
今天我们开始说Ts中的Enum枚举类型和泛型的相关内容:
枚举类型在其他的很多静态语⾔中都有相应的使⽤,在TS中的枚举类型也是类似的,很常见的⼀个使⽤场景是: 当我们在进⾏switch…case 或者if…else…这样的条件判断的时候,我们可以对⼀些判断条件使⽤枚举类型,它可以使得条件的判断更加的直观,提⾼代码的可读性和易维护性。
这⾥我们定义⼀个简单的枚举类型:
enum Status{
OFFLINE,
ONLINE,
DELETE
}
枚举类型的定义使⽤的是enum关键字,使⽤时直接使⽤枚举名称.属性值的形式即可调⽤,若初始时我们
不对其赋值,其属性值会从0开始,往后每个+1的默认值赋值,如这⾥的OFFLINE为0,ONLINE为1…同时枚举类型还可以进⾏反查,及可以使⽤类型值反查出类型名,例如这⾥的OFFLINE和0是等效的。
关于TS中的泛型(generic):
当定义⼀个函数或者类的时候,我们不清楚参数的实际的类型是什么,⽽只有在调⽤的时候才指定实际的类型时,我们就可以为这个类中的属性或者函数的参数类型定义为⼀个泛型,这个泛型不是⼀个确定的类型,⽽是需要在实际的调⽤的时候根据具体的情况在进⾏指定的类型;例如:
// 我们定义⼀个join⽅法,将传递进来的参数组合在⼀起
function join<T>(first:T, second:T){
return`${first}${second}`
}
enum函数//调⽤:
let str = join<string>("zhang","san")
这⾥,我们使⽤<T>定义的T就是⼀个泛型,它不是⼀个具体的类型,当我们调⽤时,传递了<string>进去,那么这⾥的T就是string类型,它的类型时在实际的调⽤的时候才可以被确定的。
关于泛型中的⼏点⼩技巧:
1. <>中我们可以定义多个类型的泛型,如<T,A,B>
2. 当需要使⽤的是⼀个T类型的数组是,可以使⽤这样的定义: <T[]> 或者 Array<T>
泛型的继承:
当我们定义了⼀些interface或者type的⾃定义的类型时,我们希望⼀个泛型同时具有⼀个interface中的属性,那么我们就可以使⽤这个泛型去继承⼀个interface:
interface Item{
name: string
}
class DataManager<T extends Item>{// 这⾥T这个泛型及继承了Item这个接⼝
constructor(private data:T[]){}
getItem(index: number): string{
return this.data[index].name
}
}
如上⽰例所⽰,当我们在实例DataManager这个类的时候,我们传递进去的值就必须要包含Item这个interface中的属性内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论