【发布时间】:2017-03-28 22:03:26
【问题描述】:
如何在 TypeScript 中定义描述深度嵌套数组的类型或接口?
例如,假设我正在编写一个函数来针对任意数量的模式测试路径。
function match(path: string, matcher: Matcher): boolean { /* ... */ }
Matcher 类型可以是以下任何一种:
stringRegExp-
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!!!
有没有办法在 TypeScript 中实现这一点?
【问题讨论】:
标签: arrays typescript types interface nested