类型'string [] []'不能分配给类型'string []'

时间:2019-10-13 12:37:57

标签: node.js typescript

tagsUnparsed是类似于"a b c d+e+f"的字符串。我需要一个数组应该是:

["a", "b", "c", "d", "e", "f"]

在Typescript中,我尝试过:

let tags: string[] = tagsUnparsed.split(' ');
tags = tags.map((tag: string) => {
  return tag.split('+')
});

我收到此错误:

Type 'string[][]' is not assignable to type 'string[]'.
  Type 'string[]' is not assignable to type 'string'.ts(2322)

我看不到string[][]的来源。 .map返回一个数组,不确定为什么会有类型定义错误。

2 个答案:

答案 0 :(得分:3)

split返回一个数组,使map在这里返回一个数组。您可以简单地使用flatMap代替map,也可以在flat()之后附加map

答案 1 :(得分:2)

您可以使用RegExp(空格或加号)作为分隔符:

const tagsUnparsed = "a b c d+e+f"
tagsUnparsed.split(/[ +]/) // ["a", "b", "c", "d", "e", "f"]

错误是因为您有space个分离的字符串数组,然后将每个字符串除以+,所以您有一个字符串数组或数组:

["a", "b", "c", "d+e+f"]
["a", "b", "c", ["d", "e", "f"]]