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

Typescript 是否可以指定类在声明后实现抽象类?,typescript,typescript-class,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 abst

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

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 with protocols)中也是可能的。

是的,可能是:

示例类.ts

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

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

export interface ExampleClass extends ExampleAbstractClass {} // NOTICE: usage of interface!
import { ExampleClass, ExampleAbstractClass } from "./example-class";

const a: ExampleAbstractClass = new ExampleClass(); // works!
console.log(a.exampleMethod());
示例class.test.ts

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

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

export interface ExampleClass extends ExampleAbstractClass {} // NOTICE: usage of interface!
import { ExampleClass, ExampleAbstractClass } from "./example-class";

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

您必须在
旁边使用
接口
。您还可以使用
declare module”“{}

在单独的文件中定义和实现
ExampleClass
,这很有趣。我发现这并没有强制执行
抽象
类定义中的任何内容。您将看到是否在
ExampleClass
中删除了
exampleMethod()
的实现,没有编译错误。@ebuat3989我在发布之前检查过,当我将
exampleMethod()
定义为返回
number
而不是
string
的函数时,它确实出错。无论如何,这不是我会使用的设计,因为它看起来很容易破碎。