在TS中字面量不仅可以表示值,还可表示类型
TS支持3种字面量类型:字符串字面量类型、数字字面量类型、布尔字面量类型
可以使用一个字符串字面量作为变量的类型
应用场景: 将多个字面量类型组合成一个联合类型
相当于string类型的子集
和字符串字面量类型一样
布尔字面量只包含true和false,true | false 的组合类型跟直接使用boolean没有区别
获取对象的值建立一个集合
tskeyof T
表示类型为类型T的所有公共属性的字面量构成的联合类型
interface Prople { name: string age: number } let a:keyof Prople //此时a的类型为类型Prople的所有公共属性的字面量(name,string)构成的联合类型 "name" | "age"
tsT[K]
表示对象T的属性K所代表的类型
interface Prople { name: string age: number } let b:Prople["age"] //此时b的类型为Prople的属性K所代表的的属性 number
tslet obj = {
a: 1,
b: 2,
c: 3
}
function getValues<T,K extends keyof T>(obj: T, keys: K[]): T[K][] {
return keys.map(key => obj[key])
}
console.log(getValues(obj,["a","b","c"]))
console.log(getValues(obj,["a","b","d"]))//error 不能将类型“"d"”分配给类型“"a" | "b" | "c"”
本文作者:RKLS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!