[英]can TypeScript restrict keyof to a list of properties of a particular type?
[英]TypeScript: Restrict keyof type
interface StorageType {
[key: string]: StorageType | string | number
}
interface StorageSchema extends StorageType {
username: string,
user: {
name: string,
age: number,
address?: {
street: string,
aptNumber: number,
},
},
email: string,
totalItems: number,
};
type InputType = keyof StorageSchema;
如何将 InputType 限制为仅用于 StorageSchema 的键而不是任何字符串。
您可以使用映射类型提取类型的已知键:
type InputType = keyof {
[P in keyof StorageSchema as string extends P? never: P] : unknown
};
as
子句将 go 通过类型上的所有字段和索引并将它们传递给条件类型。 string extends P
仅对string
为真,因此它将被映射到never
意味着它将从结果类型中删除。 其他键将不受影响,我们可以使用keyof
从映射类型中获取它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.