Generics Typescript-是否可以将泛型类型作为参数而不使用泛型元素?

Generics Typescript-是否可以将泛型类型作为参数而不使用泛型元素?,generics,typescript,proxy,Generics,Typescript,Proxy,我希望能够在没有泛型的情况下访问泛型类型。。。。可能吗 例如,如果我有一个通用接口 interface GenIntf<T1, T2> { someGenFunct(param: P1): T2; } 所以在这里,我不想让工厂知道任何关于GenIntf的泛型类型的信息,我只想确保提供了GenIntf的实现。但除非我把它改成 create<A, B>(genIntf: GenIntf<A, B>) { create(genIntf:genIntf){

我希望能够在没有泛型的情况下访问泛型类型。。。。可能吗

例如,如果我有一个通用接口

interface GenIntf<T1, T2> {
  someGenFunct(param: P1): T2;
}
所以在这里,我不想让工厂知道任何关于GenIntf的泛型类型的信息,我只想确保提供了GenIntf的实现。但除非我把它改成

create<A, B>(genIntf: GenIntf<A, B>) {
create(genIntf:genIntf){

但是抽象地处理这一点就更困难了。

您可以在类型参数中使用
any
类型:

class ProxyFactory {
  create(genIntf: GenIntf<any, any>): any {
    return new Proxy(genIntf.someGenFunct, {});
  }
}
默认类型参数

中,您可以考虑使用默认类型参数:

interface GenIntf<T1 = any, T2 = any> {
  someGenFunct(param: T1): T2;
}
接口GenIntf{
someGenFunct(参数:T1):T2;
}

但这会影响接口本身,这可能不是您想要的。

我一直在尝试放置?相反,编译器compiler complainedI可以将
any
理解为类型参数,但它们应该是
{}
返回类型注释完全错误-1@AluanHaddad为什么返回类型是错误的?它是从问题中复制过来的。也许提问者真的希望返回类型是
any
…它毕竟是显式输入的。而且,为什么它应该是
{}
而不是
any
?询问者要求它与泛型类型中指定的任何类型兼容,并且
any
满足该要求。
{}
是编译器在默认情况下无法推断泛型类型参数时使用的。返回类型是个问题,你说得对。我错过了。我将取消对它的否决票。@AluanHaddad是的,我同意。在这种特定情况下,以及在大多数情况下,最好根本不使用
any
。有少数情况下
any
很有用,但非常罕见……我认为如果使用它,它的作用域最多应该限制在函数的作用域内,以防止出现错误。typescript 2.3目前正在候选发行版(
npm Itypescript@2.3
)将允许您指定默认值,如
接口GenInft{someGenFunct(参数:P1):T2;}
class ProxyFactory {
  create<A, B>(genIntf: GenIntf<A, B>) {
    return new Proxy(genIntf.someGenFunct, {});
  }
}

const genIntf = ...;
const proxyFactory = new ProxyFactory();
const proxy = proxyFactory.create(genIntf);
interface GenIntf<T1 = any, T2 = any> {
  someGenFunct(param: T1): T2;
}