作者:天地会珠海分舵 链接:zhuanlan.zhihu.com/p/402278035 来源:知乎
获取接口属性类型的联合值
interface Student {
name: string;
age: number;
}
这时如果我们对interface使用keyof
type propKeys = keyof Student // name | age
我们知道输出的是以接口属性的键命组成的联合类型: ‘name’ | 'age’
这时我们如果要获得各个键的属性所组成的联合类型,比如上面的string和number,可以这样做
type propTypes = Student[keyof Student]
这里的propTypes就是个联合类型: string | number
in keyof 用法示例
interface BrowserCache {
TOKEN_CACHE: string;
ID_CACHE: number;
}
type TCacheExpiretTime = {
[key in keyof BrowserCache]: Date;
}
TCacheExpireTime最终类型推断将会是
type TCacheExpiretTime = {
TOKEN_CACHE: Date | undefined;
ID_CACHE: Date | undefined;
}
如果想每个属性可选,可将代码修改成
type TCacheExpiretTime = {
[key in keyof BrowserCache]?: Date;
}
TCacheExpireTime最终类型推断将会是
type TCacheExpiretTime = {
TOKEN_CACHE?: Date | undefined;
ID_CACHE?: Date | undefined;
}