Clases abstractas en TypeScript
Una base que no puede instanciarse, con miembros que la subclase debe proveer.
interface Describable {
describe(): string;
}
abstract class Check implements Describable {
abstract readonly name: string;
abstract passes(value: string): boolean;
describe(): string {
return `${this.name} check`;
}
report(value: string): string {
return `${this.describe()}: ${this.passes(value) ? "pass" : "fail"}`;
}
}
class MinLength extends Check {
readonly name = "min length";
constructor(private floor: number) {
super();
}
passes(value: string): boolean {
return value.length >= this.floor;
}
}
const checks: Check[] = [new MinLength(3)];
console.log(checks.map((check) => check.report("ada")));
Cómo funciona
- Los miembros
abstractno tienen cuerpo y deben implementarse. - La base todavía puede albergar comportamiento compartido y concreto.
implementschequea una clase contra una interfaz.
Palabras clave y builtins usados aquí
Checkabstractbooleanclassconstconstructorextendsimplementsinterfacenumberprivatereadonlyreturnstringsuperthis
El intento, en números
- Líneas
- 29
- Caracteres a escribir
- 610
- Tokens
- 163
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 98 segundos.
Paso 3 de 4 en Clases; paso 3 de 19 en Clases y patrones.