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

Is it possible to implement one of two signatures in Typescript?

本文关键字:两个 一个 Typescript 实现 是否      更新时间:2023-09-26

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

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

interface arrayTypeOne {...}
interface arrayTypeTwo {...}
export class MyClass {
    myMethod(args:MustBeOneOrTwo) {
    }
}

这种灵活性对于API的消费者来说是很有价值的,所以我认为把它分成两种方法不是一个好主意。另一方面,我真的很想声明一个比all更具体的类型。

想法?

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

在你的例子中,你会做:

interface arrayTypeOne {...}
interface arrayTypeTwo {...}
export class MyClass {
    myMethod(args: arrayTypeOne | arrayTypeTwo) {
    }
}