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
的函数时,它确实出错。无论如何,这不是我会使用的设计,因为它看起来很容易破碎。