从TypeScript中的返回值自动推断类型

时间:2018-11-05 17:17:09

标签: typescript

我有一种方法,希望能够传递一种类型的参数(它将是工厂函数)并返回另一种类型的参数(实例化的类)。我正在努力使返回类型正确,因此我想退后一步,并使用简单的numberstring变量来完成操作-但仍然无法以通用方式使它工作

如果我有一个convert函数,该函数会将数字转换为字符串并将字符串转换为数字:

let convert: Convert = function ( value ) {
    if ( typeof value === 'number' ) {
        return value.toString();
    }

    return parseInt( value.toString(), 10 );
}

使用此界面可以正常工作:

interface Convert {
    ( string ): number;
    ( number ): string;
}


let a = convert( '1' ); // a is a `number`
let b = convert( 2 );   // b is a `string`

如果我不使用该界面,TypeScript会自动将返回视为string | number,据我所知。

我尝试使用:

interface Convert {
    <Tout, Tin>(
        value: Tin
    ): Tout;
}

认为这可能意味着Tout将由基于Tin的返回值定义,但没有骰子。老实说,我不太了解何时应该传入泛型以及何时通过TypeScript推断泛型。

我在这里树错了树吗-我应该只使用泛型告诉TypeScript我期望它返回什么,而不是期望它可以自动完成?

0 个答案:

没有答案