I\'m trying to implement a method in a super class that should be available for use, but not changeable, in sub classes. Consider this:
export abstract clas
No, at the time of this writing there is not. There is a proposal for such a keyword which is still being considered, but may or may not ever be implemented.
See:
// I use this workaround:
export default class CreateHandler extends BaseHandler {
// final prop used as method
public readonly create = (blueprint: Blueprint): Response<Record> => {
return blueprint.create();
};
// normal method
public store(blueprint: Blueprint): Response<Record> {
return this.response(blueprint.create());
}
}
Example of implementation hack of 'sealed method' as readonly property of type function which throws compiler error when attempting to override in extended class:
abstract class BaseClass {
protected element: JQuery<HTMLElement>;
constructor(element: JQuery<HTMLElement>) {
this.element = element;
}
readonly public dispose = (): void => {
this.element.remove();
}
}
class MyClass extends BaseClass {
constructor(element: JQuery<HTMLElement>) {
super(element);
}
public dispose(): void { } // Compiler error: "Property 'dispose' in type 'MyClass' is not assignable to the same property in base type 'BaseClass'"
}
TypeScript 2.0 supports "final" classes through using of private constructor:
class A {
private constructor(){}
}
class B extends A{} //Cannot extend a class 'A'. Class constructor is marked as private.ts(2675)