跳至內容

typescript/no-explicit-any 限制

🛠️ 此規則的部分違規情況可使用自動修正。

此規則的作用

禁止明確使用 any 類型。

為何這是個壞習慣?

TypeScript 中的 any 類型是一種危險的「逃生出口」,會跳脫型別系統。 使用 any 會禁用許多型別檢查規則,通常最好僅在最後手段或原型開發時使用。此規則會報告明確使用 any 關鍵字作為類型註解的情況。

TypeScript 的 --noImplicitAny 編譯器選項會防止隱含的 any,但不會像此規則一樣阻止明確使用 any

範例

此規則的不正確程式碼範例

typescript
const age: any = "seventeen";
const ages: any[] = ["seventeen"];
const ages: Array<any> = ["seventeen"];
function greet(): any {}
function greet(): any[] {}
function greet(): Array<any> {}
function greet(): Array<Array<any>> {}
function greet(param: Array<any>): string {}
function greet(param: Array<any>): Array<any> {}

此規則的正確程式碼範例

typescript
const age: number = 17;
const ages: number[] = [17];
const ages: Array<number> = [17];
function greet(): string {}
function greet(): string[] {}
function greet(): Array<string> {}
function greet(): Array<Array<string>> {}
function greet(param: Array<string>): string {}
function greet(param: Array<string>): Array<string> {}

選項

此規則接受以下選項

ignoreRestArgs

一個布林值,指定是否允許其餘運算符產生的陣列。預設為 false

fixToUnknown

是否啟用自動修正,將 any 類型轉換為 unknown 類型。預設為 false

參考

以 MIT 許可發布。