【问题标题】:VSCode Eslint Error no-unsafe-assignment Incorrectly DisplayedVSCode Eslint 错误 no-unsafe-assignment 显示不正确
【发布时间】:2022-01-27 03:53:17
【问题描述】:

这是一个涉及@typescript-eslint/no-unsafe-assignment 的奇怪问题。我有一个打字稿文件,称为 oldmodel.ts,在我的 VSCode IDE 中,当我加载文件时,以下内容不会在我的 ESlint VSC 终端中产生任何错误:

export interface ITestObject {
  createDate?: Date,
}

export class TestObject implements ITestObject {
  createDate?: Date;

  constructor(options: ITestObject = {}) {
    this.createDate = (options.createDate instanceof Date || !isNaN(Date.parse(options.createDate || ''))) ? new Date(options.createDate || '') : undefined;
  }
}

如果我将相同的代码复制并粘贴到新创建的 newmodel.ts 文件中,该文件与 oldmodel.ts 位于同一文件夹中,我的 VSCode 会为以 this.createDate 开头的行生成不安全分配错误。有人知道这是怎么发生的吗?

【问题讨论】:

  • 重启ESlint服务器后错误是否消失?
  • 老实说,它没有。

标签: angular typescript visual-studio-code eslint typescript-eslint


【解决方案1】:

好的,我不记得是谁提出了这个建议,因为他删除了他的评论,但我听从了他的建议,它似乎奏效了。所以我所做的是在 newmodel.ts 文件中,我创建了另一个引用相关类的类:

interface ISampleResponse {
  testObject?: TestObject
}

export class SampleResponse implements ISampleResponse {
  testObject?: TestObject

  constructor(options: ISampleResponse = {}) {
    this.testObject = new TestObject(options.testObject);
  }
}

然后,在另一个文件中,例如一个可注入服务,我继续在文件中导入该响应类:

import { SampleResponse } from '../models/newmodel.ts';

保存该文件后,我回到 newmodel,转到出现该 eslint 错误的行,对其进行修改以便它可以引导更改,然后错误消失了!只要您在另一个模型或服务或组件中引用您的模型,最终错误就会消失。

此外,当您为 typescript 项目启用严格类型时,会发生这种情况。

【讨论】:

    【解决方案2】:

    我猜在你没有在你的适当模块中声明你的新组件“TestObject”之前,文件代码有时可能会显示一些错误。

    你能测试一下当你在模块的声明部分添加“TestObject”时,新文件在哪里,错误消失了吗?

    编辑: 我可以考虑 2 个不同的原因/原因:

    1. 旧模型文件名为“test-object.ts”并与类名(“TestObject”)匹配,但新文件(new-object.ts”)与“TestObject”不匹配。

    2. 您将旧模型称为 TestObject,也将新模型称为 TestObject。 然后,角度系统“遇到”了一个问题,所以它显示了这个错误。

    这个新答案中的任何一个对您有意义吗?你能测试一下吗?

    【讨论】:

    • 它不是一个组件,它是一个简单的model.ts文件。
    • 哦!我没有意识到!抱歉,我要编辑我的答案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 2020-10-01
    • 1970-01-01
    • 2023-02-26
    • 2021-08-10
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多