TypeScriptプロジェクトをコンパイルするときは、変数と引数で型を指定するのを忘れないように、noImplicitAny
オプションを使用しています。
ただし、使用しない引数がある場合もあります。例えば:
jQuery.ajaxTransport("+*", function (options: JQueryAjaxSettings) {
return {
abort: function (_, callback: JQueryCallback) {
Abort関数の最初の引数には興味がないので、_という名前を付けて無視します。
それはTypeScriptでそれを行う適切な方法ですか?ガイドでは見つかりませんでした。 _という引数は1つしか指定できないため、これは適切な方法ではないようです。
TypeScriptは次のエラーを発生させます。
エラーTS7006:パラメータ '_'は暗黙的に 'any'タイプを持っています。
_:any
しかし、それは私が使用しない引数には少々やり過ぎに思えます。
私も同じ問題を抱えていました。 sayエクスプレスとルーティングを使用すると、多くの場合、resパラメーターのみが必要になります。
router.get('/', function (req, res) { res.end('Bye.'); });
_を使用するという考えはここで機能しますが、これも機能することがわかりました。
function (_1, _2, _3, onlyThis) { console.log(onlyThis); }
'_'だけを実行すると、lodash/underscoreの使用が少し混乱する可能性があるため、これはより良いように思われます。また、興味のある4番目のパラメータであることも明らかになります。
私は遅れているかもしれませんが、他の解決策に悩まされており、これはいつも私にとってうまくいきます:
function ({}={}, {}={}, {}={}, onlyThis) { console.log(onlyThis); }
_0
、_1
、...ソリューションを使用すると、次のようなスクープ関数の問題に直面しました。
function parent(_0, _1, _2) {
function child(_0, _1, _2) {
// TypeScript crying about shallowed variables
}
}
しかし、空のオブジェクトではうまくいきます:
function parent({}, {}, {}) {
function child({}, {}, {}) {
// :-)
}
}
パラメータが次のように入力されたとしても:
function parent({}: number, {}: string, {}: any) {
function child({}: number, {}: string, {}: any) {
// :-) x2
}
}
編集:
そして here と書かれているように、デフォルト値を設定すると、指定されたパラメーターがundefined
またはnull
の場合にエラーがスローされるのを回避できます。
function parent({}={}, {}={}, {}={}) {
function child({}={}, {}={}, {}={}) {
// :-)
}
}