背景:尝试在Typescript中编写一些类型友好的FP。具体来说,我正在尝试编写一种getter工厂函数,以返回一个类型安全的getter,该类型安全的getter通过一个键读取值,该键来自具有该键值类型的任何类型。 如果我立即定义类型,它将起作用:
export const fnGetter = <T extends object, K extends keyof T>(key: K) => (obj: T) => obj?.[key];
export const getTitleString = fnGetter<{title?: string}, 'title'>('title');
// console.log(getTitleString({title: 123})); // compile error, good
console.log(getTitleString({title: 'Hello'})); // => 'Hello'
但是它很冗长,我想知道以下内容:
export const getTitleString = fnKeyGetter<string>('title');
// console.log(getTitleString({title: 123})); // compile error, good
console.log(getTitleString({title: 'Hello'})); // => 'Hello'
fnKeyGetter
函数应如何起作用?是否可以从键和值类型构建泛型类型?
答案 0 :(得分:0)
这似乎对我有用,并且可以正确推断类型:
function getPropertyFactorry<O>(key: keyof O) {
return function(o: O) {
return o[key];
}
}
尽管我不认为这是您正在寻找的解决方案。