您好我在Angular2和Typescript上编写应用程序并为get事件创建服务。我想我的函数返回数组事件,当我没有在函数中传递参数并在有参数时返回Object。
但在我的组件中,lintner显示此构造的错误。
this.event.length
输入'事件|事件[]'不能分配给'事件[]'。类型 '事件'不能分配给'事件[]'。 物业长度'类型'事件'
中缺少
我可以抓住这个错误吗?因为我知道这个组件中的内容是什么来获取事件数组
答案 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);
}
}