這是一個涉及@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開頭的行生成不安全分配錯誤。有人知道這是如何/為什么會發生的嗎?
uj5u.com熱心網友回復:
好的,我不記得是誰提出了這個建議,因為他洗掉了他的評論,但我聽從了他的建議,似乎奏效了。所以我所做的是在 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 專案啟用嚴格型別時,就會發生這種情況。
uj5u.com熱心網友回復:
我想,除非您不在適當的模塊中宣告新組件“TestObject”,否則檔案代碼有時可能會顯示一些錯誤。
您能否測驗當您將“TestObject”添加到新檔案所在模塊的宣告部分時,錯誤是否消失?
編輯:我可以考慮 2 個不同的原因/原因:
舊模型檔案名為“test-object.ts”并與類名(“TestObject”)匹配,但新檔案(new-object.ts”)與“TestObject”不匹配。
您將舊模型稱為 TestObject,也將新模型稱為 TestObject。然后,角度系統“遇到”了一個問題,因此它顯示了該錯誤。
這個新答案中的任何一個對您有意義嗎?你能測驗一下嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421750.html
標籤:
