3 回答

TA貢獻1834條經驗 獲得超8個贊
之所以可以使用此樣式(可能是在此處使用該樣式)的原因_是比短一個字符()。
可選括號與可選大括號屬于同一樣式問題。這在很大程度上取決于品味和代碼風格,但由于一致性,在這里傾向于冗長。
盡管箭頭函數允許單個參數不帶括號,但它與零,單個解構,單個休止符和多個參數不一致:
let zeroParamFn = () => { ... };
let oneParamFn = param1 => { ... };
let oneParamDestructuredArrFn = ([param1]) => { ... };
let oneParamDestructuredObjFn = ({ param1 }) => { ... };
let twoParamsFn = (param1, param2) => { ... };
let restParamsFn = (...params) => { ... };
盡管is declared but never used錯誤固定在打字稿2.0為下劃線的參數,_也可以觸發unused variable/parameter從棉絨或IDE警告。這是反對這樣做的一個相當大的理由。
_通??梢杂糜诤雎缘膮担ㄈ缫呀浗忉尩钠渌鸢福1M管這可能被接受,但是這種習慣可能會導致與_Underscore / Lodash命名空間發生沖突,并且在存在多個被忽略的參數時也會令人困惑。因此,正確命名帶下劃線的參數(在TS 2.0中受支持)是有益的,還節省了找出函數簽名的時間以及為什么將這些參數標記為忽略的原因(這違背了將_參數作為快捷方式的目的):
let fn = (param1, _unusedParam2, param3) => { ... };
由于上述原因,我個人認為_ => { ... }代碼風格是一種不好的語氣,應該避免。

TA貢獻1859條經驗 獲得超6個贊
該()語法傳達的意圖更好恕我直言,也是更具體的類型
不完全是。()表示該函數不包含任何參數,不聲明任何參數。該函數.length為0。
如果使用_,它將明確聲明該函數將被傳遞一個參數,但您對此并不在意。該函數的.length值為1,這在某些框架中可能很重要。
因此,從類型的角度來看,這可能是更準確的操作(尤其是當您不使用any而是鍵入時_: Event)。正如您所說,鍵入的字符減少了一個字符,在某些鍵盤上也更容易觸及。

TA貢獻1784條經驗 獲得超8個贊
可以區分這兩種用法,并且某些框架使用它來表示不同類型的回調。例如,我認為節點表達框架使用它來區分中間件的類型,例如錯誤處理程序使用三個參數,而路由使用兩個參數。
這樣的區分看起來像下面的例子:
const f1 = () => { } // A function taking no arguments
const f2 = _ => { } // A function with one argument that doesn't use it
function h(ff) {
if(ff.length==0) {
console.log("No argument function - calling directly");
ff()
} else if (ff.length==1) {
console.log("Single argument function - calling with 1");
ff(1)
}
}
h(f1)
h(f2)
添加回答
舉報