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!!!
有沒有辦法在打字稿實現這一目標?