基于反应界面生成空对象

发布于 2025-01-28 21:55:02 字数 1016 浏览 2 评论 0原文

我的界面是在枚举上生成的,并且它

enum HealthPlanStatus {
    InProgress = 'InProgress',
    Completed = 'Completed',
}

export type THealthPlanCardsByStatus = {
    [status in keyof typeof HealthPlanStatus]: {
        cards: string[];
    };
}

在项目中具有可读的键,我想正确声明由 healthplanstatus 生成的空对象。

const cards = ['1', '2', '3']
const cardsGroupedByStatus: any = {}
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = cards.filter(card => card)
})

为了避免错误,它现在具有“任何” ,但是我想看到任何一个变体:

  1. const cardgroupedbystatus:thealthplandarcardsbystatus = {}
  2. const const carst groupedbystatus = {}作为thealthplancardsbystatus

在这两种情况下我都有不同的错误:

  1. < em> const cardsgroupedbystatus:thealthplancardsbystatus 类型'{}'丢失了类型'thealthplancardsbystatus'的以下属性:inprogress,已完成
  2. 无法分配给'inprogress'/'已完成',因为它是无读的

,可能,请给我建议如何正确地对新生成对象声明。 谢谢!

I have interface that is generated base on enum and it has readonly keys

enum HealthPlanStatus {
    InProgress = 'InProgress',
    Completed = 'Completed',
}

export type THealthPlanCardsByStatus = {
    [status in keyof typeof HealthPlanStatus]: {
        cards: string[];
    };
}

In my project I want to correctly declare an empty object that is generated by HealthPlanStatus.

const cards = ['1', '2', '3']
const cardsGroupedByStatus: any = {}
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = cards.filter(card => card)
})

To avoid errors it has now "any", but I want to see any of this variants:

  1. const cardsGroupedByStatus: THealthPlanCardsByStatus = {}
  2. const cardsGroupedByStatus = {} as THealthPlanCardsByStatus

In both cases I have different errors:

  1. const cardsGroupedByStatus: THealthPlanCardsByStatus
    Type '{}' is missing the following properties from type 'THealthPlanCardsByStatus': InProgress, Completed
  2. Cannot assign to 'InProgress' / 'Completed' because it is a read-only

If it's not possible, please, give me advise how to correctly make declaration for new generates object.
Thanks!

Link to reproduce errors

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贪了杯 2025-02-04 21:55:02

基于注释:

  1. 您不需要typeof,将其删除并离开:
export type THealthPlanCardsByStatus = {
    [status in HealthPlanStatus]: {
        cards: string[];
    };
}
  1. 然后您可以使用
const cardsGroupedByStatus = {} as THealthPlanCardsByStatus
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = { // you forgot initialize object here
        cards: cards.filter(card => card)
    }
})

const cardsGroupedByStatus: Partial<THealthPlanCardsByStatus> = {}
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = {
        cards: cards.filter(card => card)
    }
})

Based on comments:

  1. You don't need keyof typeof, remove it and leave just:
export type THealthPlanCardsByStatus = {
    [status in HealthPlanStatus]: {
        cards: string[];
    };
}
  1. Then you can use
const cardsGroupedByStatus = {} as THealthPlanCardsByStatus
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = { // you forgot initialize object here
        cards: cards.filter(card => card)
    }
})

or

const cardsGroupedByStatus: Partial<THealthPlanCardsByStatus> = {}
Object.values(HealthPlanStatus).forEach(status => {
    cardsGroupedByStatus[status] = {
        cards: cards.filter(card => card)
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文