如何在typescript方法中推断泛型返回值?
我想更好地理解typescript如何使用泛型推断返回类型。如果在没有泛型类型参数的情况下调用使用泛型类型作为返回值的方法,那么typescript如何推断返回类型?我理解,通过发送的类型可以很容易地推断泛型in参数,但如果没有提供泛型类型参数,则无法推断返回参数的方式如何在typescript方法中推断泛型返回值?,typescript,typescript-generics,Typescript,Typescript Generics,我想更好地理解typescript如何使用泛型推断返回类型。如果在没有泛型类型参数的情况下调用使用泛型类型作为返回值的方法,那么typescript如何推断返回类型?我理解,通过发送的类型可以很容易地推断泛型in参数,但如果没有提供泛型类型参数,则无法推断返回参数的方式 //调用: 这个。得到一些东西(价值); //方法签名: getSomething(参数:string):T{ ... } > p>让我们考虑获取()/方法: getSomething<T>(inParameter
//调用:
这个。得到一些东西(价值);
//方法签名:
getSomething(参数:string):T{
...
}
<代码> > p>让我们考虑<代码>获取()/<代码>方法:
getSomething<T>(inParameter: string): T {
return null!; // <-- this isn't safe, whatever you put here
}
如果调用const t:string=this.getSomething(value)
它将使用
决定t
必须是string
:
const t: string = this.getSomething("value");
// contextual typing, T is inferred as string
但是,如果调用者提供一个T
类型的参数,或者某个本身可能产生T
类型的值,则对安全性和推理都有好处。例如:
getSomethingReasonable<T>(inParameter: string, tArray: T[]): T {
return tArray[inParameter.length];
}
const okay = this.getSomethingReasonable("value", [1,2,3,4,5,6,7,8]);
// inference on tArray, T is number
getsomethingsreasonal(参数:string,tArray:T[]):T{
返回tArray[参数长度];
}
const okay=this.GetSomethingRational(“值”[1,2,3,4,5,6,7,8]);
//关于tArray的推论,T是数字
它更安全,因为输入tArray
提供了一种运行时机制,即使使用类型擦除,也可以生成T
类型的值。正如您所指出的,这是推断T
的好方法
好的,希望能有帮助。祝你好运
getSomethingReasonable<T>(inParameter: string, tArray: T[]): T {
return tArray[inParameter.length];
}
const okay = this.getSomethingReasonable("value", [1,2,3,4,5,6,7,8]);
// inference on tArray, T is number