私は Angular の例でこの構造に遭遇しましたが、なぜこれが選択されたのか疑問に思いました。
_ => console.log('Not using any parameters');
変数は_
気にしない/使用しないことを意味することは理解していますが、それが唯一の変数であるため、 の使用を優先する理由はありますか_
?
() => console.log('Not using any parameters');
これは、入力する文字が 1 つ減るということではないはずです。()
私の意見では、構文の方が意図をよりよく伝え、より型に特化しています。そうでなければ、最初の例は次のようになるはずだったと思います。
(_: any) => console.log('Not using any parameters');
重要であれば、これが使用された文脈です:
submit(query: string): void {
this.router.navigate(['search'], { queryParams: { query: query } })
.then(_ => this.search());
}
ベストアンサー1
このスタイルを使用できる理由 (おそらくここで使用された理由) は、_
が より 1 文字短いためです()
。
オプションの括弧は、次のようなスタイルの問題に陥ります。オプションの中括弧これは主に好みとコード スタイルの問題ですが、一貫性を保つために冗長性が優先されます。
矢印関数では括弧なしの単一のパラメータが許可されますが、ゼロ、単一の構造化分解、単一の残余引数、および複数のパラメータとは矛盾します。
let zeroParamFn = () => { ... };
let oneParamFn = param1 => { ... };
let oneParamDestructuredArrFn = ([param1]) => { ... };
let oneParamDestructuredObjFn = ({ param1 }) => { ... };
let twoParamsFn = (param1, param2) => { ... };
let restParamsFn = (...params) => { ... };
エラーis declared but never used
TypeScript 2.0で修正されましたアンダースコア付きパラメータの場合、リンターまたは IDE からの警告が_
トリガーされる可能性もあります。これは、これを行うことに対するかなりの反対意見です。unused variable/parameter
_
無視されるパラメータには慣例的に使用できます (他の回答で既に説明されているように)。これは許容できると考えられるかもしれませんが、この習慣は_
Underscore/Lodash 名前空間との競合を引き起こす可能性があり、無視されるパラメータが複数ある場合にも混乱を招く可能性があります。このため、適切に名前が付けられたアンダースコア付きパラメータ (TS 2.0 でサポート) を持つことは有益であり、関数シグネチャとパラメータが無視としてマークされている理由を理解する時間を節約します (これは_
ショートカットとしてのパラメータの目的に反します)。
let fn = (param1, _unusedParam2, param3) => { ... };
上記の理由から、私は個人的には、_ => { ... }
コード スタイルは避けるべき悪いトーンであると考えています。