如何从TypeScript接口中仅获取键作为自动补全内容?
TypeScript 实现接口键数组的自动补全
要让数组allowedSortIds包含IUser接口的键,同时获得输入自动补全和类型校验,有两种实用方式:
方式一:直接指定数组类型
给数组声明Array<keyof IUser>类型,TypeScript会自动识别接口的所有键作为数组元素的合法值,输入时IDE会弹出补全提示,同时如果输入不属于接口的键会直接报错。
interface IUser { id: string; firstname: string; lastname: string; } let allowedSortIds: Array<keyof IUser> = [ 'id', 'firstname', 'lastname', ];
方式二:用as const固化字面量类型
如果数组内容不需要后续修改,用as const将数组转为只读元组,此时数组元素会被识别为具体的字面量类型,不仅能获得补全,还能提取出对应的联合类型供其他场景复用。
interface IUser { id: string; firstname: string; lastname: string; } const allowedSortIds = [ 'id', 'firstname', 'lastname', ] as const; // 提取数组元素的联合类型,可用于其他变量或函数参数的类型约束 type AllowedSortId = typeof allowedSortIds[number];
两种方式都能满足需求:方式一适合需要动态修改数组的场景,方式二更适合固定数组且需要复用类型的场景。
内容的提问来源于stack exchange,提问作者locklock123
相关产品推荐
相关产品推荐

