如何修复使用as类型的接口语法错误



我有一个接口:

export interface DocumentBlock {
children: DocumentBlock[] | DocumentField[];
}

当我尝试在foreach中设置类型DocumentField时:

this.documentBlock.children.forEach((element: DocumentField) => {});

我得到了这个错误:

Type'(元素:DocumentField(=>void不能分配给类型

当我添加:元素时:DocumentField | DocumentBlockIU在DocumentField中没有type属性,当我尝试获取它时:

element.type

我试过这个:

this.documentBlock.children.forEach((element: DocumentField | DocumentBlock) => {
if (element.type == 0) {
(element as DocumentField).visible = true;
}
});

您所做的是完全正确的,也是解决问题的唯一方法。基本上,您需要一种方法来断言您传递给函数的类型,以便TS编译器了解您可能传递的两种类型中的哪一种类型实际上是在传递的。

最新更新