是否可以在Typescript中实现两个签名之一?

时间:2016-01-13 00:15:48

标签: javascript typescript

例如,假设我想接受一个特定类型的数组(比如User)或数组的数组 Users作为参数。

换句话说,我想做这样的事情:

interface arrayTypeOne {...}
interface arrayTypeTwo {...}

export class MyClass {

    myMethod(args:MustBeOneOrTwo) {

    }
}

灵活性对API的消费者很有价值,因此我认为将其分解为两种方法并不是一个好主意。另一方面,我真的想声明一种比all更具体的类型。

想法?

1 个答案:

答案 0 :(得分:3)

最新版本的Typescript引入了 union types 的概念,您可以在其中指定参数/变量是类型列表之一。

在你的例子中,你会这样做:

interface arrayTypeOne {...}
interface arrayTypeTwo {...}

export class MyClass {

    myMethod(args: arrayTypeOne | arrayTypeTwo) {

    }
}