状況
配列を引数に取るJS関数の型宣言ファイルを作成しています。
与えられた配列が空の場合は空配列、それ以外の場合は定義済みの型Aを返す関数です。
配列の長さが1以上の場合については、
ts
1function func(arr: [unknown, ...unknown[]]): A
で表現できると思うのですが、空配列の場合にどのように書けばいいのかで悩んでいます。
試したこと
空配列が与えられたときは返り値がAではなく空配列であることが推論されて欲しいのですが、例えば
ts
1function func(arr: []): []
でオーバーロードした場合、たまたま空になっているnumber[]
型の配列などを引数に取れなくなり、また返り値の型も[]
なので以降は要素を追加できなくなります。
「任意の空配列を受け取ることができ、その場合同じ型の空配列を返す」という型付けはできないのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。