はじめに
以下のコードには問題があります。
type F = (() => number ) | ((text: string) => number)
const f: F = (text) => text.length
type G = (...args: string[]) => number
const g: G = f
gを引数なしで呼び出したとき、実際にはfが引数なしで呼ばれ、ランタイムエラーとなるからです。
このコードでは型エラーが出ません(TS v5.9.2現在)。
期待する挙動としては、Gにfを代入しようとしたら型エラーを起こすことでしょう。
関連するIssue
Geminiにmicrosoft/TypeScriptのissuesを調べさせたところ、以下が見つかりました。
既知だが未解決な問題に近いでしょうか。
おわりに
冒頭のようなあからさまな書き方をすることはないと思いますが、関数のユニオン型には気を付けなければならないと思います。
