我有以下打字稿功能:
add(element: T) {
if (element instanceof class1) (<class1>element).owner = 100;
}
问题是我收到以下错误:
错误 TS2012:无法将“T”转换为“class1”
有任何想法吗?
我有以下打字稿功能:
add(element: T) {
if (element instanceof class1) (<class1>element).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;
}
}
}
当然,如果您使用泛型类型约束,您可以删除强制转换和检查...
class class1 {
constructor(public owner: number) {
}
}
class Example<T extends class1> {
add(element: T) {
element.owner = 100;
}
}
这class1
用作约束,但您可能决定使用任何类必须满足才能有效的接口 - 例如,它必须具有名为owner
type的属性number
。