是否可以指定一个类在声明后实现一个抽象类?

时间:2019-10-29 16:58:05

标签: typescript typescript-class

我想声明一个抽象类和一个类而不声明该类在同一文件中实现了抽象类。

abstract class ExampleAbstractClass {
    abstract exampleMethod(): string;
}

class ExampleClass {
    exampleMethod(): string { return 'test'; }
}


// I would like to specify that the class does implement the abstract class in another file
ExampleClass implements ExampleAbstractClass

Playground

这种用例在其他语言(例如带有协议的Swift)中也是可能的。

1 个答案:

答案 0 :(得分:0)

是的,有可能:

example-class.ts

export abstract class ExampleAbstractClass {
    abstract exampleMethod(): string;
}

export class ExampleClass {
    exampleMethod(): string { return 'test'; }
}

export interface ExampleClass extends ExampleAbstractClass {} // NOTICE: usage of interface!

example-class.test.ts

import { ExampleClass, ExampleAbstractClass } from "./example-class";

const a: ExampleAbstractClass = new ExampleClass(); // works!
console.log(a.exampleMethod());

class declaration merging is currently disallowed in TypeScript起,您必须在interface旁使用class。您也可以使用ExampleClass在单独的文件中定义和实现declare module "<path to implementation source file>" {}的{​​{3}}。

相关问题