首页 > 解决方案 > 是否可以指定一个类在声明后实现一个抽象类?

问题描述

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

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

操场

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

标签: typescripttypescript-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!

示例类.test.ts

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

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

由于TypeScript 目前不允许合并类声明,因此您必须同时interface使用。您还可以使用 扩展在单独文件中定义和实现的模块classExampleClassdeclare module "<path to implementation source file>" {}


推荐阅读