Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 从对象获取值的函数的强类型_Typescript_Typescript Typings - Fatal编程技术网

Typescript 从对象获取值的函数的强类型

Typescript 从对象获取值的函数的强类型,typescript,typescript-typings,Typescript,Typescript Typings,我有一个从对象中按键获取值的函数,它允许我在使用它时查看记录中可能的键的建议。函数从其参数推断类型 function get<T extends Record<string, any>, K1 extends keyof T>( record: T | undefined, key1: K1 ): T[K1] | undefined const foo = { bar: 1, baz: 2 } get(foo, 'bar') // 1, get<{

我有一个从对象中按键获取值的函数,它允许我在使用它时查看记录中可能的键的建议。函数从其参数推断类型

function get<T extends Record<string, any>, K1 extends keyof T>( record: T | undefined, key1: K1 ): T[K1] | undefined const foo = { bar: 1, baz: 2 } get(foo, 'bar') // 1, get<{ a: number, b: number }> 编辑:

我只想说清楚,如果不先指定记录,我就无法获得建议

prop('...') // no suggestions here
prop('...')(foo) // now I want suggestions

我高度怀疑这是不可能的,因为依赖项的顺序颠倒了。如果首先提供对象,则这不会成为问题

现在,您必须通过泛型手动指定对象的类型,例如:

const get = <T extends Record<K1, any>, K1 extends keyof T>(key1: K1) =>
    (record: T) => record[key1];

const foo = { bar: 1, baz: 2 }
get<typeof foo, keyof typeof foo>('bar')(foo)
const get=(key1:K1)=>
(记录:T)=>记录[key1];
const foo={bar:1,baz:2}
获取('bar')(foo)

这只是套路,与无点无关。如果你先指定键,你就无法真正获得建议,你可以获得
prop(foo)('bar')
来给你建议是的,我想以点费的方式使用它,但把它弄糊涂了。我不确定是否理解我到底想得到建议。甚至在我在编辑中指定的方法中也不可能做到?@PetrD.Svoboda:是的,我认为这是不可能的。
prop('...') // no suggestions here
prop('...')(foo) // now I want suggestions
const get = <T extends Record<K1, any>, K1 extends keyof T>(key1: K1) =>
    (record: T) => record[key1];

const foo = { bar: 1, baz: 2 }
get<typeof foo, keyof typeof foo>('bar')(foo)