typescript返回对象或数组错误

时间:2017-02-02 09:26:21

标签: javascript angular typescript

您好我在Angular2和Typescript上编写应用程序并为get事件创建服务。我想我的函数返回数组事件,当我没有在函数中传递参数并在有参数时返回Object。

但在我的组件中,lintner显示此构造的错误。

  

this.event.length

     

输入'事件|事件[]'不能分配给'事件[]'。类型   '事件'不能分配给'事件[]'。       物业长度'类型'事件'

中缺少

我可以抓住这个错误吗?因为我知道这个组件中的内容是什么来获取事件数组

2 个答案:

答案 0 :(得分:1)

您可以使用overloads。一个例子:

type MyEvent = { evtName: string }
function abc(): MyEvent[]
function abc(param): MyEvent
function abc(param?): any {
    // do the stuff
}

abc().length // ok
abc()[0].evtName // ok
abc("def").evtName // ok

答案 1 :(得分:1)

错误消息不言自明:Element | Element[]不是Element[](反之亦然,但这不是您正在做的事情)。您可以使用type guard缩小联合类型:

function isElement(value: Element | Element[]) value is Element {
    return value instanceof Element;
}

function functionWithReturn(): Element | Element[] {
    //Do something
}

function functionWithParameter(value: Element[]) {
    //Do something
}

function doWork() {
    let value = functionWithReturn();
    if (!isElement(value)) {
        functionWithParameter(value);
    }
}