一、字面量
字面量就是源码固定值,例如数值1,2,3,4以及字符串a,b,c。
字面量可以作为类型使用,如果使用字面量作为类型,那么赋值必须为该字面量。
type Mytype = 1;
let a:Mytype = 1;
let a1:Mytype = 2;//报错
二、可辨识联合类型
具有共同可辨识特征。如果一个类型别名包含具有共同辨识类型的联合,那么就会自动推断当前类型。(**幂运算符)
interface Rect{
kind:"rect",
size:number
}
interface Circle{
kind:"circle",
radiues:number
}
interface long{
kind:"long",
width:number,
height:number
}
type AllType = (Rect | Circle | long)
function getSize(value:AllType):number{
switch (value.kind) {
case 'rect':
return value.size
case 'circle':
return value.radiues
case 'long':
return value.width
}
}
- 如果使用可辨识联合类型时,同时开启了strictNullChecks,在没有将所有类型返回后,那么就会报错,可以在返回值后添加具体返回类型。
三、[ ] 索引访问操作符
需求: 获取执行对象的部分属性值,并放到数组中返回
let obj = {
age:18,
name:"123",
character:true
}
function getObjectArr<T , K extends keyof T>(obj:T,keys:K[]):T[K][]{
let arr = [] as T[K][]
keys.forEach(key=>{
arr.push(obj[key])
})
return arr
}