typescript 在类型脚本中定义具有相同方法但不同构造函数的父类

ibps3vxo  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(108)

我有这个代码:

class A {
    constructor(
        private _a: number,
    ) {}

    method1() {}
    method2() {}
}

class B {
    constructor(
        private _b: number,
    ) {}

    method1() {}
    method2() {}
}

class C {
    constructor(
        private _c: number,
    ) {}

    method1() {}
    method2() {}
}

let list = [new A(1), new B(2), new C(3)];
list.forEach((element: any) => {
    element.method1();
})

我有这三个类,它们具有不同的构造函数和相同名称的方法。
如何替换typescript的any类型以知道method1存在?

0yg35tkg

0yg35tkg1#

好吧,基本上它已经在评论中,但由于答案是缺席:最直接的方法是创建一个新类型:

class A {
    constructor(
        private _a: number,
    ) {}

    public commonMethod() {
      console.log("A")
    }
}

class B {
    constructor(
        private _b: number,
    ) {}

    public commonMethod() {
      console.log("B")
    }
}

class C {
    constructor(
        private _c: number,
    ) {}

    public commonMethod() {
      console.log("C")
    }
}

type letters = A | B | C

let list = [new A(1), new B(2), new C(3)];
list.forEach((element: letters) => {
    element.commonMethod();
})

相关问题