求一个TypeScript声明的写法

enum N {
    a: 'x1',
    b: 'x2',
}
type A = string;
type B = number;
type CollectionType = {x1?: A; x2?: B}

请教:目前的type CollectionType的声明有没有一个表达式的写法,可以让我以后添加类型type C(同时在枚举中添加c: 'x3')的时候不需要再修改CollectionType的定义?

阅读 1.4k
2 个回答
enum N {
  a = "x1",
  b = "x2",
}
type A = string
type B = number
type C = { x1: A; x2: B }
type D = Partial<{
  [k in N]: C[k]
}>

// 例如
const ok: D = { [N.a]: "应该是string" } // 合法
const ok1: D = { [N.b]: '1' } // 不合法
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进