Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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_Generics_Typescript Generics - Fatal编程技术网

如何根据接口的属性值缩小接口内的TypeScript泛型类型?

如何根据接口的属性值缩小接口内的TypeScript泛型类型?,typescript,generics,typescript-generics,Typescript,Generics,Typescript Generics,与TypeScript问题一样,很难解释我想用单词做什么,但下面的代码应该有助于理解它。 因此,我有一个多级数据结构(示例中我只保留了两级深度,但实际上可以有更多),我必须在其某些属性上映射另一个数据结构。 我的用例是编写一个配置对象,用于构建表单以创建和编辑此数据。为此,我想提供尽可能最好的自动完成 就我所知,我能够通过使用泛型类型作为条目为第一级提供自动完成功能,但我无法使其在更深的级别上工作。 在下面的代码中,您将看到一种解决方法,它可以使自动完成工作,但这是无用的,因为它包括编写属性名(

与TypeScript问题一样,很难解释我想用单词做什么,但下面的代码应该有助于理解它。
因此,我有一个多级数据结构(示例中我只保留了两级深度,但实际上可以有更多),我必须在其某些属性上映射另一个数据结构。
我的用例是编写一个配置对象,用于构建表单以创建和编辑此数据。为此,我想提供尽可能最好的自动完成

就我所知,我能够通过使用泛型类型作为条目为第一级提供自动完成功能,但我无法使其在更深的级别上工作。
在下面的代码中,您将看到一种解决方法,它可以使自动完成工作,但这是无用的,因为它包括编写属性名(不包含自动完成),这正是我试图避免的

这似乎是一个棘手的案例,但由于TypeScript专家能够用它实现相当复杂的事情,我希望有人能找到解决方案。
我发现这似乎是相关的,但无法为我的特定用例构建解决方案

这是我的遗嘱

接口Foo{
A.
B
c:{
c1
c2
}
d:{
d1
d2
}
}
接口条{
姓名:keyof T,,
child:Bar//在这里,我想传递类似于T[value of name]的内容,而不是任何内容。
}
//问题案例:
{
名称:'c',//自动完成在这里工作。
儿童:{
名称:'//Autocomplete在此处不起作用(应建议使用“c1”或“c2”)。
}
};
//解决方法:
{
名称:‘c’,
child:{//在这里,我希望自动推断类型,而不必断言它。
名称:'c1'//自动完成也在这里工作。
}
};

不完全符合您的要求,但您可以为
名称提供类型参数。是的,事实上,我尝试了类似的方法,但也遇到了同样的问题,因为它无法处理更深层次的嵌套:这与您要求的不完全一样,但您可以为
name
提供类型参数。是的,事实上,我尝试过类似的方法,但却被困在同一点上,因为它不适用于更深层次的嵌套: