我是Typescript的新手,我不确定语法。我尝试在线搜索,但没有找到任何帮助。
这些是我的界面和枚举定义。
interface Products {
asian: {[key: string]: string};
american: {[key: string]: string};
}
enum State {
NEWYORK = 'nyc',
BOSTON = 'boston'
}
interface Branch {
nyc: {
products: Products;
};
boston: {
products: Products;
};
}
我不确定如何在State
界面内使用枚举Branch
。这样我就可以使用STATE.NEWYORK
和STATE.BOSTON
枚举。
像这样:
interface Branch {
State.NEWYORK: {
products: Products;
};
STATE.BOSTON: {
products: Products;
};
}
感谢阅读。
答案 0 :(得分:3)
您可以使用计算属性的语法:
interface Branch {
[State.NEWYORK]: {
products: Products;
};
[State.BOSTON]: {
products: Products;
};
}
请注意,即使您使用enum
值,索引器仍然是字符串,并且使用enum
的值o。所以这些都是有效的:
let f!: Branch;
f[State.NEWYORK]
f["nyc"]
f.nyc
答案 1 :(得分:0)
通用且不需要维护的解决方案:
enum ApiResponseCode {
SUCCESS = 1,
FAIL = 2,
FILE_MODIFIED = 3
};
interface View {
Enums: {
ApiResponseCode: {
[P in keyof typeof ApiResponseCode]: ApiResponseCode;
}
}
};