簡體   English   中英

@typescript-eslint/no-unsafe-* 規則的新 eslint 錯誤

[英]New eslint errors with the @typescript-eslint/no-unsafe-* rules

我在將它們添加到一些現有項目中時遇到了一些麻煩。 例如,我在我開發的模塊中有一個 class:

export default class ClassName {
  // Class members
}

現在我將其導入另一個項目:

import ClassName from 'modulename';

const object = new ClassName();

我在這條線上收到 2 個錯誤。

const object object的 object 上:

error  Unsafe assignment of an any value                @typescript-eslint/no-unsafe-assignment

newnew ClassName中:

error  Unsafe construction of an any type value         @typescript-eslint/no-unsafe-call

我怎樣才能避免這些錯誤?! 我真的很想能夠遵守這些規則,因為我認為它們會非常有用!

謝謝。


這是另一個例子:

import { readJsonSync } from 'fs-extra';
const testEnv = readJsonSync(testEnvPath);

在這里,我在const testEnvtestEnv上得到了no-unsafe-assignment錯誤,在第二行的readJsonSync調用中得到了no-unsafe-call錯誤。

我可以用這段代碼擺脫第一個:

interface ITestEnv {
  // interface members
}
const testEnv: ITestEnv = readJsonSync(testEnvPath) as ITestEnv;

但是,我仍然無法弄清楚如何擺脫readJsonSync調用中的第二個。

Eslint 無法解析你的模塊的絕對導入,
這使得它可以將您的 class 類型推斷為any

確保正確定義了 ESlint 使用的tsconfig.json文件中的baseUrlpaths

@see Typescript – 模塊分辨率

在第一種情況下,您只有一個錯誤來自構造函數,它級聯到 const 賦值。 您的 class 實現中的某些內容正在將類型推斷推斷為any

不是說你的代碼不正確。 可能是,但有一個( Github 上的未解決問題)報告構造函數被同一規則錯誤標記。

關於你的第二個問題,你是否添加了@type/fs-extra作為項目依賴? 許多 npm 包本身沒有類型。 類型由某人創建並添加到@types 庫中。 在這種情況下, @types/package_name必須單獨添加為依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM