VSCode Eslint 错误 no-unsafe-assignment 错误显示

VSCode Eslint Error no-unsafe-assignment Incorrectly Displayed

这是一个涉及@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 开头的行。有人知道 how/why 这件事发生了吗?

我想除非您不在适当的模块中声明新组件“TestObject”,否则文件代码有时会显示一些错误。

你能测试当你将“TestObject”添加到新文件所在的模块的声明部分时,错误是否消失了吗?

编辑: 我可以用两种不同的方式思考 causes/reasons:

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

  2. 您将旧模型称为 TestObject,新模型也是如此。 然后,angular 系统“遇到”问题,因此显示该错误。

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

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

interface ISampleResponse {
  testObject?: TestObject
}

export class SampleResponse implements ISampleResponse {
  testObject?: TestObject

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

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

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

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

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