gpt4 book ai didi

typescript - 有没有办法根据对象键在 TypeScript 中动态生成枚举?

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:52 39 4
gpt4 key购买 nike

我正在定义一个对象,我想根据它的键动态生成枚举,所以我得到 IDE 的建议,不要调用错误的键。

const appRoutes = {
Login,
Auth,
NotFound
}

enum AppRoutes = {[Key in keyof appRoutes]: [keyof appRoutes]}

最佳答案

您不能从对象键构建实际的枚举。

您只需使用 keyof typeof appRoutes 即可获得所有键的联合,这将具有您想要的类型安全效果:

type AppRoutes = keyof typeof appRoutes

let ok: AppRoutes = "Auth";
let err: AppRoutes = "Authh";

枚举不仅仅是一种类型,它还是一个包含枚举的键和值的运行时对象。 Typescript 不提供从字符串联合自动创建此类对象的方法。然而,我们可以创建一个类型来确保对象的键和联合的成员保持同步,如果它们不同步,我们会得到一个编译器错误:

type AppRoutes = keyof typeof appRoutes
const AppRoutes: { [P in AppRoutes]: P } = {
Auth : "Auth",
Login: "Login",
NotFound: "NotFound" // error if we forgot one
// NotFound2: "NotFound2" // err
}
let ok: AppRoutes = AppRoutes.Auth;

关于typescript - 有没有办法根据对象键在 TypeScript 中动态生成枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058699/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com