跳至內容

import/namespace 正確性

功能說明

強制要求在取消引用名稱時,名稱必須存在。當以完整命名空間匯入時 (例如 import * as foo from './foo'; foo.bar(); 如果 ./foo 未匯出 bar,則會回報)。如果找不到任何匯出的名稱,則會在匯入宣告時回報。此外,也會回報計算出的引用 (例如 foo["bar"]())。針對匯入命名空間成員的指派回報。

為何不好?

取消引用不存在的名稱可能會導致執行階段錯誤和程式碼中出現意外行為。這會降低程式碼的可靠性和維護難度,因為可能不清楚哪些名稱是有效的。此規則有助於確保所有引用的名稱都已定義,從而提高程式碼的清晰度和穩健性。

範例

給定

javascript
// ./foo.js
export const bar = "I'm bar";

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

javascript
// ./qux.js
import * as foo from "./foo";
foo.notExported(); // Error: notExported is not exported

// Assignment to a member of an imported namespace
foo.bar = "new value"; // Error: bar cannot be reassigned

// Computed reference to a non-existent export
const method = "notExported";
foo[method](); // Error: notExported does not exist

此規則的正確程式碼範例

javascript
// ./baz.js
import * as foo from "./foo";
console.log(foo.bar); // Valid: bar is exported

// Computed reference
const method = "bar";
foo[method](); // Valid: method refers to an exported function

參考資料

以 MIT 授權條款發布。