簡體   English   中英

如何讓JSHint抱怨缺少函數參數?

[英]How do I make JSHint complain about missing function parameters?

如果我有一個功能:

export function createWeeklyStats(activities, offset, length) {
    ...        
}

我把這個函數稱為:

createWeeklyStats(myListOfActivities, 0)

JSHint並不抱怨我缺少length參數。 我在這里找不到匹配的強制執行選項:

JSHint選項參考

有人存在嗎?

我正在更新一個現有的方法,以包含一個新的必需參數,雖然我是一個自稱成年人,但如果我最好的方法是全文搜索,我會在這里投入合適的。

評論者是正確的,沒有辦法讓js [hl] int找到這個。

以下是一些選項:

明確檢查arg計數

檢查參數計數:

function createWeeklyStats(activities, offset, length) {
  assert(arguments.length === 3);

當然,這會在運行時而不是編譯時引發錯誤。

也許你想寫一個更高階的函數來幫助你在這里:

function check_arg_count(f) {
  return function() {
    assert(arguments.length === f.length);
    return f.apply(this, arguments);
  };
}

現在,不要調用createWeeklyStats ,而是調用check_arg_count(createWeeklyStats)

我沒有看到這種方法有什么特別的錯誤。 處理可選參數會有點棘手。 在某些時候,您可能想要放棄使用更強類型的語言或TypeScript。

使用重構工具

在這種情況下,您正在重構,那么如何使用重構工具? 許多編輯器/ IDE都有這樣的功能。 查看文檔。

還有其他工具可以幫助重構。 例如,看看掌握 實際上,掌握教程描述了一個涉及重構函數參數列表的類似案例:

$ grasp -r -e 'createWeeklyStats($a, $o)' -R 'createWeeklyStats($a, $o, 0)' })' .

這將為所有調用添加第三個參數。 更改新的第三個參數是您顯然需要照顧自己的事情。 掌握提供其他功能以縮小變更范圍。

自定義linter

您可以為eslint編寫自定義規則(但顯然不是jshint;請參閱此問題 )。 這可以幫助您入門: https//gist.github.com/jareware/7179093 還有http://eslint.org/docs/developer-guide/working-with-rules.html

暫無
暫無

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

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