类型HTMLButtonElement无法转换为类型T.

时间:2018-04-04 17:30:18

标签: typescript generics

我正在使用以下代码玩TypeScript代码游乐场。代码似乎对我来说没问题,但它给出了错误

  

“类型HTMLButtonElement无法转换为类型T”

class DomFactory {
    create<T extends HTMLElement>(args): T {
        return document.createElement('button') as T;
    }
}

1 个答案:

答案 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;
     }

此处返回的类型是正在传递的类型。