Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 - Fatal编程技术网

Typescript 从函数的返回结果中提取类型信息

Typescript 从函数的返回结果中提取类型信息,typescript,Typescript,我有以下函数(): 它为我提供了泛型{[key:string]:string}类型,这是正确的,但不是我想要实现的: 当我使用没有返回类型的函数时,如下(): 然后生成有效的结果: 但是,在这种情况下,我的返回值中没有类型检查 是否可以在返回值中进行类型检查,并在该函数之外以某种方式推断返回类型?也就是说,我想要下面这样的东西(但是使用intellisense formyvar) 一旦您将返回注释:Record添加到您的函数函数myf():Record{任何类型的推断都将始终为您提供Reco

我有以下函数():

它为我提供了泛型
{[key:string]:string}
类型,这是正确的,但不是我想要实现的:

当我使用没有返回类型的函数时,如下():

然后生成有效的结果:

但是,在这种情况下,我的返回值中没有类型检查

是否可以在返回值中进行类型检查,并在该函数之外以某种方式推断返回类型?也就是说,我想要下面这样的东西(但是使用intellisense for
myvar


一旦您将返回注释
: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>;