Gostei da dica. Implementei aqui e funcionou certinho. 
Quando o professor implementou a mensagem de validação, eu pensei na hora que poderia ser uma mensagem "vermelha", até implementei, mas com a utilização da interface fica mais bonito.
Eu deixei minha /view.ts assim:
import { View } from "./view.js";
enum MessageType {
  INFO = "info",
  SUCCESS = "success",
  DANGER = "danger",
  WARNING = "warning",
}
export interface Mensagem {
  tipo: MessageType;
  texto: string;
}
export class MensagemView extends View<Mensagem> {
  protected template(model: Mensagem): string {
    return `
      <p class="alert alert-${model.tipo}">${model.texto}</p>
    `;
  }
  public updateError(message: string): void {
    this.updateMessage(MessageType.DANGER, message);
  }
  public updateSuccess(message: string): void {
    this.updateMessage(MessageType.SUCCESS, message);
  }
  private updateMessage(type: MessageType, message: string): void {
    const mensagem: Mensagem = {
      tipo: type,
      texto: message,
    };
    this.update(mensagem);
  }
}
E no controller eu chamo de duas formas:
Quando for mensagem de erro/validação:
 this.mensagemView.updateError("Apenas negociações em dias úteis são aceitas.");
Quando for mensagem de sucesso:
this.mensagemView.updateSuccess("Negociação adicionada com sucesso.");
Valeu pela dica, acrescentei mais algumas coisas, caso seja útil.