我有一个接口:
export interface DocumentBlock {
children: DocumentBlock[] | DocumentField[];
}
当我尝试在foreach中设置类型DocumentField
时:
this.documentBlock.children.forEach((element: DocumentField) => {});
我得到了这个错误:
Type'(元素:DocumentField(=>void不能分配给类型
当我添加:元素时:DocumentField | DocumentBlock
IU在DocumentField
中没有type
属性,当我尝试获取它时:
element.type
我试过这个:
this.documentBlock.children.forEach((element: DocumentField | DocumentBlock) => {
if (element.type == 0) {
(element as DocumentField).visible = true;
}
});
您所做的是完全正确的,也是解决问题的唯一方法。基本上,您需要一种方法来断言您传递给函数的类型,以便TS编译器了解您可能传递的两种类型中的哪一种类型实际上是在传递的。