【问题标题】:Typescript: How I can define strictly constant from type打字稿:我如何从类型中定义严格的常量
【发布时间】:2021-05-06 08:10:49
【问题描述】:

我试图定义一个类型并从这个类型创建一个常量。这就是我所做的:

type  StatusType = 'active' | 'pending';

type Status = Record<Uppercase<StatusType>, Capitalize<StatusType>>;

const UserStatus: Status = {
    ACTIVE: 'Active',
    PENDING: 'Pending'
}

但如果我执行以下操作也可以:

const UserStatus: Status = {
    ACTIVE: 'Active',
    PENDING: 'Active'
}

有什么办法可以防止这种情况发生吗?我希望 PENDING 键的值必须是 Pending

【问题讨论】:

    标签: javascript typescript generics constants


    【解决方案1】:
    type StatusType = 'active' | 'pending';
    
    
    type Status = {
        [P in StatusType as Uppercase<P>]: Capitalize<P>
    }
    
    const UserStatus: Status = {
        ACTIVE: 'Active',
        PENDING: 'Pending'
    }
    
    const UserStatus2: Status = {
        ACTIVE: 'Active',
        PENDING: 'Active' // expected error
    }
    

    你应该改用映射类型

    【讨论】:

    • 太棒了!你救了我的命兄弟
    • @DFM 没问题))如果有帮助请不要忘记接受它,它会帮助其他人
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2016-04-28
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2017-04-13
    相关资源
    最近更新 更多