繁体   English   中英

TypeScript:限制keyof类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM