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
。