请教一个 TS 问题,不知能否实现

jeremye · 昨天 16:12 · 206 次点击

目前使用以下代码可以正常进行的类型推导,但每定义一个 item 都需要调用一次 defineItem,想要实现一个 defineConfig 方法,省略掉 defineItem,同时保留原先的类型推导。

interface Options<T> {
  a: () => T;
  b: (p: T) => void;
}

function defineItem<T>(options: Options<T>) {
  return options;
}

const config = {
  item1: defineItem({
    a: () => ({ id: 1 }),
    b: (params) => {}, // params 类型是 { id: number }
  }),
  item2: defineItem({
    a: () => ({ name: '1' }),
    b: (params) => {}, // params 类型是 { name: string }
  }),
};

预期的效果

const config = defineConfig({
  item1: {
    a: () => ({ id: 1 }),
    b: (params) => {}, // params 类型是 { id: number }
  },
  item2: {
    a: () => ({ name: '1' }),
    b: (params) => {}, // params 类型是 { name: string }
  },
});
举报· 206 次点击
登录 注册 站外分享
1 条回复  
bagel 小成 昨天 16:39
Partial?
返回顶部