typescript 想要扩展空接口,但得到lint错误:非空接口

mfuanj7w  于 2023-06-24  发布在  TypeScript
关注(0)|答案(5)|浏览(206)

今天,我尝试在我的angular 6应用程序中做到这一点:

  1. export interface AuthConfig {}
  2. export interface BasicAuthConfig extends AuthConfig {
  3. username: string;
  4. password: string;
  5. }
  6. export interface OAuth2AuthConfig extends AuthConfig {
  7. tokenName: string;
  8. url: string;
  9. callbackUrl: string;
  10. clientId: string;
  11. scope: string[];
  12. grantType: grantTypes;
  13. }

并得到了一个lint错误:

  1. An empty interface is equivalent to `{}`. (no-empty-interface)

我想用我的端点接口来做这件事:

  1. Export interface Endpoint {
  2. authConfig: AuthConfig;
  3. }

但却沦落到这样:

  1. Export interface Endpoint {
  2. authConfig: BasicAuthConfig | OAuth2AuthConfig;
  3. }

不同类型的授权可能会变得很长,所以我不想继续将类型添加到Endpoint接口的authConfig属性中。有没有什么方法可以声明一个空接口来扩展它,而不会让lint对我大喊大叫?
谢谢

f8rj6qna

f8rj6qna1#

您可以在tslint.json中禁用此规则:

  1. "rules": { "no-empty-interface": false }

或者只禁用一行的linting:

  1. // tslint:disable-next-line
  2. export interface AuthConfig {}
b5lpy0ml

b5lpy0ml2#

如何禁用

  1. Example:
  2. $ cat .eslintrc.js
  3. ...
  4. "rules": {
  5. '@typescript-eslint/no-empty-interface': 'off'
  6. }
  7. ...
mi7gmzs6

mi7gmzs63#

还有一种方式:

  1. // eslint-disable-next-line @typescript-eslint/no-empty-interface
  2. export interface AuthConfig {}
6yoyoihd

6yoyoihd4#

另一种解决方案是使用type而不是像export type AuthConfig = {};那样使用interface,因为在typescript 2.2中也可以扩展type

yh2wf1be

yh2wf1be5#

您可以用途:

  1. type AuthConfig = Record<string, never>

相关问题