0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【TypeScript】 デフォルト型引数について (Required type parameters may not follow optional type parameters. とは)

Posted at

はじめに

タイトルの通り、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以外についても理解が深まってきた。まだデフォルト引数を使用する必要のある場面には出会っていないが、今回学習したことで対応できる幅が広がったように思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?