Typescript 从函数的返回结果中提取类型信息
我有以下函数(): 它为我提供了泛型Typescript 从函数的返回结果中提取类型信息,typescript,Typescript,我有以下函数(): 它为我提供了泛型{[key:string]:string}类型,这是正确的,但不是我想要实现的: 当我使用没有返回类型的函数时,如下(): 然后生成有效的结果: 但是,在这种情况下,我的返回值中没有类型检查 是否可以在返回值中进行类型检查,并在该函数之外以某种方式推断返回类型?也就是说,我想要下面这样的东西(但是使用intellisense formyvar) 一旦您将返回注释:Record添加到您的函数函数myf():Record{任何类型的推断都将始终为您提供Reco
{[key:string]:string}
类型,这是正确的,但不是我想要实现的:
当我使用没有返回类型的函数时,如下():
然后生成有效的结果:
但是,在这种情况下,我的返回值中没有类型检查
是否可以在返回值中进行类型检查,并在该函数之外以某种方式推断返回类型?也就是说,我想要下面这样的东西(但是使用intellisense formyvar
)
一旦您将返回注释
:Record
添加到您的函数函数myf():Record{
任何类型的推断都将始终为您提供Record
推荐
您已经知道,要获取实际返回的类型,可以让TypeScript推断:
function myf() {
return {
prop1: "a",
prop2: "b"
}
}
// Now its {prop1: string, prop2: string}
type MyType = ReturnType<typeof myf>;
函数myf(){
返回{
方案一:“a”,
建议2:“b”
}
}
//现在是{prop1:string,prop2:string}
类型MyType=ReturnType;
一旦您将返回注释:Record
添加到您的函数函数myf():Record{
任何类型的推断都将始终为您提供Record
推荐
您已经知道,要获取实际返回的类型,可以让TypeScript推断:
function myf() {
return {
prop1: "a",
prop2: "b"
}
}
// Now its {prop1: string, prop2: string}
type MyType = ReturnType<typeof myf>;
函数myf(){
返回{
方案一:“a”,
建议2:“b”
}
}
//现在是{prop1:string,prop2:string}
类型MyType=ReturnType;
我真的不明白第二种情况下的问题是什么。可以把{prop1:string;prop2:string}
作为返回类型可以解决问题吗?当然可以解决问题,但我不想引入单独的返回类型,因为我有一种感觉,我可以通过TypeScript类型系统以某种方式推断出该类型。我可能有很多类似的函数,所有函数都返回不同的对象,返回对象在开发过程中会发生变化t time,因此我不想每次在返回对象上添加\delete\change属性时都修复返回类型定义。相反,我希望自动推断返回类型。在我看来,如果不想引入单独的返回类型,请不要编写返回类型,让typescript推断它,然后我在返回中丢失类型检查值,如我在问题中所述:)。但是您希望在函数中检查什么?我不太明白第二种情况下的问题是什么。是否可以将{prop1:string;prop2:string}
作为返回类型可以解决问题吗?当然可以解决问题,但我不想引入单独的返回类型,因为我有一种感觉,我可以通过TypeScript类型系统以某种方式推断出该类型。我可能有很多类似的函数,所有函数都返回不同的对象,返回对象在开发过程中会发生变化t time,因此我不想每次在返回对象上添加\delete\change属性时都修复返回类型定义。相反,我希望自动推断返回类型。在我看来,如果不想引入单独的返回类型,请不要编写返回类型,让typescript推断它,然后我在返回中丢失类型检查值,如我在问题中所述:)。但您希望在函数中检查什么?谢谢,这是我最初的尝试之一,但如问题所述,使用建议的方法,我会丢失函数内部的类型检查,即,我无法检查prop1
的值是否为字符串,因为它只接受任何内容。此外对于Record
这样的类型,我在返回类型中丢失IntelSense也是出于同样的原因。谢谢,这是我最初的尝试之一,但如问题所述,使用建议的方法,我在函数中丢失了类型检查,即,我无法检查prop1
的值是否是字符串,因为它只接受任何内容。a对于Record
I等类型的lso,由于同样的原因,我在返回类型中丢失了IntelliSense。
function myf() {
return {
prop1: "a",
prop2: "b"
}
}
function myf() {
return {
prop1: "a",
prop2: "b"
}
}
// Now its {prop1: string, prop2: string}
type MyType = ReturnType<typeof myf>;