在我的Angular9和Angular10项目中,我能够使用 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 ( )成功更改TSLint
为ESLint
以下之后,我收到以下错误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
值。