2

在我的Angular9Angular10项目中,我能够使用 Harnessing the power of Mixins in Angular博客mixins中的以下步骤进行创建

构造函数.mixin.ts

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

我的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();
  };

这工作正常,直到我按照Angular 更新指南 中的步骤更新了 Angular

在从 Codelyzer 和 TSLint 迁移 Angular CLI 项目并运行 linting ( )成功更改TSLintESLint以下之后,我收到以下错误npx ng lint my-project-name --fix

1:29 错误不要{}用作类型。{}实际上意味着“任何非空值”。

  • 如果您想要一个表示“任何对象”的类型,您可能想要Record<string, unknown>
  • 如果你想要一个表示“任何值”的类型,你可能想要unknown@typescript-eslint/ban-types

在线上抛出错误export type Constructor<T = {}> = new (...args: any[]) => T;

我的问题是如何重构这条线以满足typescript. 不幸的是,我无法在我的用例中找到答案,例如TypeScript '{}' 类型是关于如何输入非nullish值。

4

0 回答 0