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
不是一个类型,而是泛型参数的名称。这也可能是其他任何词。