Angular2 | Typescript如何使用单位类型

时间:2016-05-25 21:32:19

标签: javascript typescript angular

我在Angular2中有以下课程

export class Person {
    public children: Person[] | (() => Person[])
}

所以,我的目的是让children属性成为一个可以让我获得数组的函数数组。在没有理解为什么这个类的结构是这样的的情况下,我想看看是否有人在尝试调用person.children()时有关于typetype的类型问题有同样的问题。

错误是:

Cannot invoke an expression whose type lacks a call signature

Error given by TypeScript

现在,如果我将人员变为"任何",那么Typescript错误会消失(正如预期的那样)并且javascript执行该功能没有问题。

有什么方法可以避免演员表?

1 个答案:

答案 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();
}

使用alm.tools

进行测试

enter image description here