はじめに
タイトルの通り、TypeScript のデフォルト型引数の使用方法と、自分が遭遇したRequired type parameters may not follow optional type parameters.
というエラーについてまとめる。
結論
引数が複数ある場合、デフォルト型引数を設定する引数は最後にしないと、
「Required type parameters may not follow optional type parameters」
(必須の型パラメータはデフォルト型引数の前に配置してください)
というエラーがでる。
詳細
デフォルト型引数は
const func = <T, U, V = number>(value1: T, value2: U, value3: V): [T, U, V] => {
return [value1, value2, value3];
}
と、引数にV = number
のように型を与えることで、
// 3つ目の引数の型を指定していない
const result = func<string, number>("foo", 42, 30);
// が自動的にnumberを当てはめてくれる
console.log(result);
=> ["foo", 42, 30]
関数の呼び出し時に型を指定しなくても自動的にデフォルトで設定した型を適用してくれるもの。
ただし、例えば
const func = <T, U = number, V>(value1: T, value2: U, value3: V): [T, U, V] => {
return [value1, value2, value3];
}
と引数の2つ目にデフォルト引数を設定したりすると
Required type parameters may not follow optional type parameters」
(必須の型パラメータはデフォルト型引数の前に配置してください)
のエラーがでる。
おわりに
普段Reactを書く際などに使っているTypeScript以外についても理解が深まってきた。まだデフォルト引数を使用する必要のある場面には出会っていないが、今回学習したことで対応できる幅が広がったように思います。