给定一个具有如下类型的对象:
type Variables = {
_id: string;
variable1: string;
variable2: string | null;
variable3: string | null;
variable4: string | null;
variable5: string | null;
}
是否可以使用方括号表示法和字符串来访问其属性之一,而不欺骗 Typescript 的类型系统?目前我正在这样做(大致)是这样的:
const level = 1;
const propertyName = `variable${level}` as unknown as keyof Variables;
const variableAtLevel = instance[propertyName];
尽管我已经实施了保护措施,以免尝试访问不存在的东西,但这看起来充其量是黑客行为,最坏的情况下是潜在的故障点。有没有更安全的方法?
是的,您可以在您的类型上使用索引签名来做到这一点。
type Variables = {
_id: string;
variable1: string;
variable2: string | null;
variable3: string | null;
variable4: string | null;
variable5: string | null;
[x: `variable${number}`]: string | null;
}
declare const variable: Variables;
const level = 1;
const variableAtLevel = variable[`variable${level}`];