我正在使用以下代码玩TypeScript代码游乐场。代码似乎对我来说没问题,但它给出了错误
“类型HTMLButtonElement无法转换为类型T”
class DomFactory {
create<T extends HTMLElement>(args): T {
return document.createElement('button') as T;
}
}
答案 0 :(得分:1)
您传递泛型类型,然后将结果转换为此类型。这已过时,因为返回的类型始终为editEmployee
。所以这没有用。
有一种情况,您通常仍希望推断出类型。当您想要使用工厂创建某个类的实例时会发生这种情况(因此您不知道返回的类型)。这是official docs的示例:
obj.editEmployee=function(employeeId,employeeName,employeeLocation){
var index=employees.map((id)=>id.empId).indexOf(employeeId);
if(index != -1){
$log.log("edit employee = "+ employees.map((id)=>id.name)[index])
employees[index].empId=employeeId;
employees[index].name=employeeName;
employees[index].location=employeeLocation;
}
return employees;
}
此处返回的类型是正在传递的类型。