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
unknownem 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.