javascript - Como Criar um Mixin no Angular11 com ESLint


Nos meus projetos Angular9 e Angular10, consegui criar mixins usando os passos abaixo do blog Harnessing the power of Mixins in Angular

constructor.mixin.ts

export type Constructor<T = {}> = new (...args: any[]) => T;

my-mixin.mixin.ts

import {Constructor} from './constructor.mixin';
import {BehaviorSubject} from 'rxjs';

export const myMixin = <T extends Constructor>(BaseClass: T = class { } as T) =>
  class extends BaseClass {
    title = 'Title in the mixin';
    titleUpdateSubject$ = new BehaviorSubject('');
    title$ = this.typedTitleSubject$.asObservable();
  };

Isto funcionou bem até eu atualizar o Angular seguindo os passos no Guia de Atualização do Angular

Após uma alteração bem-sucedida de TSLint para ESLint seguindo Migrating an Angular CLI project from Codelyzer and TSLint e executando a verificação de lint (npx ng lint my-project-name --fix) recebo o erro abaixo

1:29 erro Não use {} como tipo. {} na verdade significa "qualquer valor não nulo ou indefinido".

  • Se quiser um tipo que signifique "qualquer objeto", provavelmente quer Record<string, unknown> em vez disso.
  • Se quiser um tipo que signifique "qualquer valor", provavelmente quer unknown em vez de @typescript-eslint/ban-types

O erro está a ser gerado na linha export type Constructor<T={}>=new (...args: any[]) => T;

O meu problema é como posso refatorar esta linha para satisfazer o typescript. Infelizmente, não consigo encontrar uma resposta para o meu caso de uso, por exemplo, em TypeScript o tipo '{}' é sobre como tipar um valor não nullish.