У меня есть простая функция flatten
. Идея состоит в том, что он может принимать массив строк или массив массивов строк и всегда возвращать массив строк только одного уровня. Например:
flatten(['a', ['b']]) // returns ['a', 'b']
flatten(['a', 'b']) // returns ['a', 'b']
Вот реализация этой функции
function flatten(arr: ReadonlyArray<string | string[]>): string[] {
return [].concat(...arr);
}
Я получаю следующую ошибку компилятора TypeScript:
error TS2769: No overload matches this call.
Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
Argument of type 'string | string[]' is not assignable to parameter of type 'ConcatArray<never>'.
Type 'string' is not assignable to type 'ConcatArray<never>'.
Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
Argument of type 'string | string[]' is not assignable to parameter of type 'ConcatArray<never>'.
Type 'string' is not assignable to type 'ConcatArray<never>'.
105 return [].concat(...arr);
~~~~~~
Как определить типы для ввода и вывода этой flatten
функции? Я хочу избежать использования типа any
.