【问题标题】:Prettier removes typesPrettier 移除类型
【发布时间】:2019-06-18 14:13:12
【问题描述】:

我不知道为什么,我在一个 Angular 应用程序中,当我按下格式文档时,我的类型被删除了。

# Before:
export class AppComponent {
  title:string = 'angular-todolist';
  name:string = 'Michael';
  someInteger:number = 10;
}
# After:
export class AppComponent {
  title = 'angular-todolist';
  name = 'Michael';
  someInteger = 10;
}

有什么建议吗?

【问题讨论】:

    标签: angular typescript prettier


    【解决方案1】:

    默认情况下,prettier-tslint 与 Prettier 一起安装,并且会根据您的 tslint.json 配置进行格式化,自动修复轻微的 linter 错误。

    由 Angular CLI 生成的 linting 规则有一条规则指出隐式类型的变量不需要显式类型。具体来说,这是tslint.json 中的no-inferrable-types 规则。

    如果您没有内联分配变量,则不会删除它们的类型,例如:

    export class AppComponent {
      name: string;
    
      constructor() {
        this.name = 'Name';
      }
    }
    

    格式化上述内容将保持显式输入。

    由于默认的 linting 规则是“Angular 方式”,我认为保持原样不会有问题;如果一个变量立即被赋值为一个字符串,那么它的类型显然是一个字符串。

    但是,如果您想更改 Prettier 格式化行为,只需将 tslint.json 中的 no-inferrable-types 条目更改为 false。如果您不想更改 linting 规则,您还应该能够在 Prettier 工作区配置中禁用它,但您的 linter 仍会显示可推断类型的错误。

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2020-09-15
      • 2021-10-05
      • 1970-01-01
      • 2022-01-25
      • 2020-08-10
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      相关资源
      最近更新 更多