请教个 ts 中 enum 的问题?

以下写法会报错
image.png

enum Abc {
  A = 'a',
  B = 'b',
  C = 'c',
}

// 只需要 A和B 这种情况应该怎么写呢
const map: Record<Abc, string> = {
  [Abc.A]: 'aaa',
  [Abc.B]: 'bbb',
}
阅读 1.9k
5 个回答

Record<Exclude<Abc, 'c'>, string>

Record<Exclude<Abc, 'c'>, string>

enum Abc {
  A = 'a',
  B = 'b',
  C = 'c',
}

type AbcKeys = keyof typeof Abc;
type MyKeys = Exclude<AbcKeys, 'C'>;
// 或者 type MyKeys = Extract<AbcKeys, 'A' | 'B'>;  更符合你只想要A和B的意思

const map1: Record<typeof Abc[MyKeys], string> = {
    [Abc.A]: 'aaa',
    [Abc.B]: 'bbb',
};
enum Abc {
  A = 'a',
  B = 'b',
  C = 'c',
}

//使用 Abc.A | Abc.B  简单明了
const map: Record<Abc.A | Abc.B, string> = {
  [Abc.A]: 'aaa',
  [Abc.B]: 'bbb',  
}

const map: Record<string,string>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题