2
TypeScriptで深くネストされた配列を記述する型またはインターフェイスを定義するにはどうすればよいですか?TypeScriptに深くネストされた配列を記述する
たとえば、任意の数のパターンに対してパスをテストする関数を作成しているとします。
function match(path: string, matcher: Matcher): boolean { /* ... */ }
Matcher
型は、以下のいずれかであってもよい:すなわち
string
RegExp
Matcher[]
(自己参照に注意)
、コンパイラは以下を受け入れるべきです:
match('src/index.js', 'lib/**/*');
match('src/index.js', /\/node_modules\//);
match('src/index.js', ['src/**/*', /\.js$/]);
match('src/index.js', ['src/**/*', [/\.js$/, ['*.ts']]]);
が、以下は、コンパイルエラーを生成する必要があります
match('src/index.js', {'0': 'src/**/*'}); // Compiler Error!!!
match('src/index.js', ['src/**/*', true]); // Compiler Error!!!
match('src/index.js', ['src/**/*', [/\.js$/, [3.14]]]); // Compiler Error!!!
活字体でこれを達成するための方法はありますか?