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

时间:2020-08-12 13:49:21

标签: typescript

我有一个界面:

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

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

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

我收到此错误:

类型'(element:DocumentField)=>无效'不能分配给类型

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

element.type

我已经尝试过了:

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

1 个答案:

答案 0 :(得分:0)

您所做的完全正确,是解决问题的唯一方法。基本上,您需要一种assert the type传递给函数的方法,以使TS编译器理解您实际上传递的是两种可能的类型中的哪一种。