E0296: abstract properties are only allowed in abstract classes
TypeScript abstract classes can contain abstract methods and fields. It
is a syntax error to write an abstract method or field in a class not marked
abstract
:
class Logger {
// Implement this in subclasses.
abstract log(
severity: LogLevel,
message: string,
);
}
class ConsoleLogger extends Logger {
log(
severity: LogLevel,
message: string,
) {
console.log(`${severity}: ${message}`);
}
}
To fix this error, add the abstract
keyword to the class:
abstract class Logger {
// Implement this in subclasses.
abstract log(
severity: LogLevel,
message: string,
);
}
Alternatively, make the method non-abstract by removing the abstract
keyword
and giving it a body:
abstract class Logger {
// Optionally implement this in subclasses.
log(
severity: LogLevel,
message: string,
) {
// Default behavior: do not log.
}
}
Introduced in quick-lint-js version 2.10.0.