ts如何将类型推导中的或改成且?

type DataStore = {
    [K in pageName]:  {
        page: K
        data: A[K] extends { roleId: string }[] ? A[K] : never
    }
}[keyof A]

interface A extends Record<pageName, unknown> {
    [pageName.q]: DataA[]
    [pageName.w]: DataB[]
}

enum pageName {
    q = '1',
    w = '2',
    e = '3',
    //...
}

interface DataA { roleId: string, name:string }
interface DataB { roleId: string, age: string }
let info: Record<number, DataA> | Record<number, DataB>; // 请求发过来的数据

(Object.entries(info) as unknown as [string, DataStore['data'][number]][])
    .map(([page, data]) => {
        // 这里data的推导类型是 DataA | DataB
        // 但我希望是 DataA & DataB
    })

我打算在map里面统一处理,但是现在的推导类型让我只能 拿到data.roleId这一个值,其他的值被类型检查否了。我该如果修改,使得我能用data. 出来其他的属性呢?

阅读 1.6k
2 个回答

你为啥不直接这样写?

let info: Record<number, DataA & DataB>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏