Typescript 将泛型类型转换为具体类型时出错
我有以下类型脚本函数:Typescript 将泛型类型转换为具体类型时出错,typescript,generics,casting,compiler-errors,Typescript,Generics,Casting,Compiler Errors,我有以下类型脚本函数: add(element: T) { if (element instanceof class1) (<class1>element).owner = 100; } add(元素:T){ if(元素实例类别1)(元素).owner=100; } 问题是我遇到了以下错误: 错误TS2012:无法将“T”转换为“class1” 有什么想法吗?不能保证您的类型是兼容的,因此您必须按照以下要求进行双重转换 class class1 { constructo
add(element: T) {
if (element instanceof class1) (<class1>element).owner = 100;
}
add(元素:T){
if(元素实例类别1)(元素).owner=100;
}
问题是我遇到了以下错误:
错误TS2012:无法将“T”转换为“class1”
有什么想法吗?不能保证您的类型是兼容的,因此您必须按照以下要求进行双重转换
class class1 {
constructor(public owner: number) {
}
}
class Example<T> {
add(element: T) {
if (element instanceof class1) {
(<class1><any>element).owner = 100;
}
}
}
class1类{
建造商(公共所有人:编号){
}
}
课例{
添加(元素:T){
if(类别1的元素实例){
(要素)。所有者=100;
}
}
}
当然,如果使用泛型类型约束,可以删除强制转换和检查
class class1 {
constructor(public owner: number) {
}
}
class Example<T extends class1> {
add(element: T) {
element.owner = 100;
}
}
class1类{
建造商(公共所有人:编号){
}
}
课例{
添加(元素:T){
element.owner=100;
}
}
这是使用class1
作为约束,但您可能会决定使用任何类都必须满足的接口才能有效-例如,它必须有一个名为owner
的number
类型的属性