Wie definiere ich einen Typ oder eine Schnittstelle, die in TypeScript ein tief verschachteltes Array beschreiben?Beschreiben eines tief verschachtelten Arrays in TypeScript
Nehmen wir zum Beispiel an, ich schreibe eine Funktion zum Testen eines Pfades gegen eine beliebige Anzahl von Mustern.
function match(path: string, matcher: Matcher): boolean { /* ... */ }
Der Matcher
Typ kann einer der folgenden sein:
string
RegExp
Matcher[]
(beachten Sie die Selbstreferenz)
Mit anderen Worten, die Der Compiler sollte folgendes akzeptieren:
match('src/index.js', 'lib/**/*');
match('src/index.js', /\/node_modules\//);
match('src/index.js', ['src/**/*', /\.js$/]);
match('src/index.js', ['src/**/*', [/\.js$/, ['*.ts']]]);
aber die folgenden sollte einen Compiler-Fehler erzeugen:
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!!!
Gibt es eine Möglichkeit, dies zu erreichen in Typoskript?