我正在用 TypeScript 建模 API 请求格式:
interface ApiTerm {
term: {
name: string,
value: string,
}
}
interface ApiAnd {
and: {
lhs: ApiItem,
rhs: ApiItem,
}
}
interface ApiOr {
or: {
lhs: ApiItem,
rhs: ApiItem,
}
}
type ApiItem =
| ApiTerm
| ApiAnd
| ApiOr
;
Run Code Online (Sandbox Code Playgroud)
这有效,但我需要实现许多二进制操作,而不仅仅是“和”和“或”,所以我想要一些方法来缩短和重用代码。
按照我编写的一些在接口中使用特定字符串枚举值的其他代码,我尝试使用字符串枚举作为属性名称:
enum Operation {
And = "and",
Or = "or",
}
interface ApiBinary<O extends Operation> {
[O]: {
lhs: ApiItem,
rhs: ApiItem,
}
}
type ApiItem =
| ApiTerm …Run Code Online (Sandbox Code Playgroud) 我有以下情况:
enum T {
A = "a"
};
enum U {
[T.A] = "u"
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
枚举中不允许使用计算属性名称。
有办法解决吗?或者也许使用类似的资源可以让我有类似的行为?