ddd-ts-kit/errors-constructor-not-public
Identifiant d'architecture : errors/constructor-not-public. Sévérité par défaut : error dans recommended, error dans strict.
S'applique à : les fichiers de production de domain/errors/ d'un contexte, dans un projet dont la configuration dit "stack.refusals": "factories".
Pourquoi
Section intitulée « Pourquoi »Un constructeur public permet à n'importe quel appelant de construire un refus avec un code et un message de son cru. ConceptError de @ddd-ts-kit/kernel a un constructeur protégé, et une classe qui l'étend n'en déclare aucun : un refus n'existe alors que par une fabrique statique.
- une classe qui en étend une autre et déclare un constructeur public
- une classe qui étend
DomainErroret ne déclare pas de constructeur : elle en hérite un public
Une classe abstraite n'est pas jugée.
Incorrect :
export class SlotTakenError extends DomainError { readonly code = 'SLOT_TAKEN';
constructor(calendarId: string) { super(`The slot on calendar ${calendarId} is already held.`); }}Correct :
export class AppointmentError extends ConceptError { static slotTaken(calendarId: string) { return AppointmentError.refusal('SLOT_TAKEN', `The slot on calendar ${calendarId} is already held.`, { calendarId }); }}Aucune.
rules."errors/constructor-not-public" à off dans ddd-ts-kit.config.json désactive la règle, et // ddd-ts-kit-disable-next-line errors/constructor-not-public -- <reason> désactive une ligne, exactement comme pour ddd-ts-kit check.
- Une classe qui étend une base du projet et ne déclare pas de constructeur est présumée correcte : la visibilité dont elle hérite est dans un autre fichier.
- Rien n'est corrigé : rendre un constructeur privé casse chaque
newde la classe.ddd-ts-kit error-factoriesfait passer un projet entier aux fabriques.
Avec le checker de la CLI
Section intitulée « Avec le checker de la CLI »Tenue par ce plugin seul : la forme d'une classe demande un arbre syntaxique.