相关疑难解决方法(0)

如何在接口中使用字符串枚举类型作为计算属性名称?

我正在用 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)

typescript

7
推荐指数
1
解决办法
1万
查看次数

对枚举使用计算值

我有以下情况:

enum T {
    A = "a"
};

enum U {
    [T.A] = "u"
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

枚举中不允许​​使用计算属性名称。

有办法解决吗?或者也许使用类似的资源可以让我有类似的行为?

enums typescript

5
推荐指数
1
解决办法
3395
查看次数

标签 统计

typescript ×2

enums ×1