我想声明一个抽象类和一个类而不声明该类在同一文件中实现了抽象类。
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)中也是可能的。
答案 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}}。