Javascript Typescript:如何在函数中使用泛型类型

Javascript Typescript:如何在函数中使用泛型类型,javascript,typescript,Javascript,Typescript,我的结构如下: export interface Complex { getId<T>(entity: T): string } const test: Complex = { getId<Number>(entity){return "1"} // does not work 'entity is implicitly any' } 导出接口复合体{ getId(实体:T):字符串 } 常数测试:复杂={ getId(entity){return“1

我的结构如下:

export interface Complex {
    getId<T>(entity: T): string
}

const test: Complex = {
    getId<Number>(entity){return "1"} // does not work 'entity is implicitly any'
}
导出接口复合体{
getId(实体:T):字符串
}
常数测试:复杂={
getId(entity){return“1”}//不起作用“entity是隐式的any”
}

为什么我必须将
实体
的类型声明为
实体:编号
,以使其工作?

因为您声明的接口具有泛型类型函数(
getById

要将泛型引用为类型,必须执行以下操作:

interface Complex<T> {
  getId(entity: T): string;
}

const test: Complex<Number> = {
  getId(entity) {
    return entity.toString();
  }
}
接口复合体{
getId(实体:T):字符串;
}
常数测试:复杂={
getId(实体){
返回实体.toString();
}
}
您所做工作的用例可能如下所示:

interface AbstractFactory {
  create<T>(data: T): string;
}

const factory: AbstractFactory = {
  create<T>(data: T): string {
    return data.toString();
  }
}

factory.create<Number>(123);
接口抽象工厂{
创建(数据:T):字符串;
}
常量工厂:抽象工厂={
创建(数据:T):字符串{
返回data.toString();
}
}
创建(123);

我故意只想为函数指定泛型类型,而不是整个接口。只要我声明
entity:Number
,我上面的函数就可以工作,但为什么我必须这样做。因为
Number
不是一个类型,而是泛型参数的名称。这也可能是其他任何词。