TypeScript は静的型がウリの言語なので、もうちょっとやりようはあるのではないか。 目標:型付き正規表現 これらの問題を解決するために、キャプチャーの型の情報を埋め込んだ型 TypedRegExp<captures> を作りたい。キャプチャーの型とは、具体的には string: 通常のキャプチャー string | undefined: 後ろに ? や * がついたもの、あるいは | の一方に含まれるもの undefined: 否定先読み (?! .. ) に含まれるキャプチャー のいずれかである。例えば、 /(a)(b)?/ という正規表現のキャプチャーの型は、順に string, string | undefined となる。 captures が string, string | undefined というリストの場合(最初の例)、 r: TypedRegExp<captur
