首页 > 解决方案 > TypeScript:想要使用表达式构建文字类型

问题描述

在以下代码中:

const byLiteral = 3;
const byExpression = 1 + 2;

byLiteral的类型是 3,而byExpression的类型是number

我希望byExpression' 的类型为 3。

也许它有点自相矛盾,因为1 + 2它是一个表达式(尽管是一个“常量”表达式)而不是一个文字,它可能很有用,例如在以下情况下。

const BitsByLiteral = {
    BIT0: 1,
    BIT1: 2,
    BIT2: 4
} as const;

const BitsByExpression = {
    BIT0: 1 << 0,
    BIT1: 1 << 1,
    BIT2: 1 << 2
} as const;

BitsByLiteral的类型是

const BitsByLiteral: {
    readonly BIT0: 1;
    readonly BIT1: 2;
    readonly BIT2: 4;
}

whileBitsByExpression的类型是

const BitsByExpression: {
    readonly BIT0: number;
    readonly BIT1: number;
    readonly BIT2: number;
}

有什么办法吗?

标签: typescript

解决方案


推荐阅读