我在Angular2中有以下课程
export class Person {
public children: Person[] | (() => Person[])
}
所以,我的目的是让children属性成为一个可以让我获得数组的函数数组。在没有理解为什么这个类的结构是这样的的情况下,我想看看是否有人在尝试调用person.children()时有关于typetype的类型问题有同样的问题。
错误是:
Cannot invoke an expression whose type lacks a call signature
现在,如果我将人员变为"任何",那么Typescript错误会消失(正如预期的那样)并且javascript执行该功能没有问题。
有什么方法可以避免演员表?
答案 0 :(得分:0)
无法调用类型缺少调用签名的表达式
您需要使用type guard
(更多https://basarat.gitbooks.io/typescript/content/docs/types/typeGuard.html),以便打字稿知道此时它不会是array
。例如
class Person {
public children: Person[] | (() => Person[])
}
const person = new Person();
if (typeof person.children === 'function'){
person.children();
}
进行测试