import/named 正確性
作用
驗證所有具名匯入 (named imports) 是否都屬於參照模組中的具名匯出 (named exports) 集合。
對於 export
,驗證所有具名匯出是否存在於參照模組中。
注意:對於套件,如果 package.json
中存在 jsnext:main
(已棄用) 或 module
,則外掛程式會從這些地方找到匯出的名稱。例如,Redux 的 npm 模組包含此鍵,因此可以進行程式碼檢查。
當匯入時,會忽略被忽略或不明確的 ES 模組的模組路徑。請注意,Flow 使用的型別匯入和匯出會始終被忽略。
為什麼這是不好的?
匯入或匯出參照模組中不存在的名稱可能會導致執行階段錯誤和混亂。這可能會暗示某些功能可用,但實際上並非如此,使得程式碼更難以維護和理解。此規則有助於確保您的程式碼準確反映可用的匯出,從而提高可靠性。
範例
給定
js
// ./foo.js
export const foo = "I'm so foo";
此規則的錯誤程式碼範例
js
// ./baz.js
import { notFoo } from "./foo";
// ES7 proposal
export { notFoo as defNotBar } from "./foo";
// will follow 'jsnext:main', if available
import { dontCreateStore } from "redux";
此規則的正確程式碼範例
js
// ./bar.js
import { foo } from "./foo";
// ES7 proposal
export { foo as bar } from "./foo";
// node_modules without jsnext:main are not analyzed by default
// (import/ignore setting)
import { SomeNonsenseThatDoesntExist } from "react";