【发布时间】:2019-04-27 05:07:56
【问题描述】:
我最终想要做的是创建一个 React HOC,它将注入一个由字符串定义的属性并返回一个组件,而不需要注入的属性。本质上,这归结为返回省略函数的工厂函数。
正如你在这个例子中看到的那样,由于某种原因,类型 B 最终是“从不”。
const f = <A extends object, B extends keyof A>(arg: B) => (obj: A): Omit<A, B> => {
delete obj[arg]
return obj
}
// TS2345: Argument of type "test" is not assignable to parameter of type 'never'
const a = f('test')
const b = a({ test: 1})
const c = b.test
当我在泛型参数之外尝试 keyof 时,它似乎运行得更好,但打字稿不能正确推断返回类型,我不知道如何键入它,因为我不知道如何获取对第一个的引用可以在省略中使用的字符串 arg:
const f = <A extends object>(arg: keyof A) => (obj: A) => {
delete obj[arg]
return obj
}
const a = f('test')
const b = a({ test: 1 })
// Does not infer 'test' is no longer here
const c = b.test
供参考省略为:
export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>
【问题讨论】:
标签: reactjs typescript