I have the following TypeScript function:
add(element: T) {
if (element instanceof class1) (<class1>element).owner = 100;
}
问题是我遇到了以下错误:
有什么想法吗?错误 TS2012:无法将 'T' 转换为 'class1'
I have the following TypeScript function:
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
的属性,类型为 number
。