我是TypeScript的新手。了解基本知识,但遇到了一个类型转换错误,我还没有找到解决方案。
const [full, id]: string | null = /.*media\/[^\/]+\/(.*)/.exec(item.uri)
typescript抛出错误:[完整,ID]
Type 'RegExpExecArray | null' is not assignable to type 'string | null'.
Type 'RegExpExecArray' is not assignable to type 'string'.ts(2322)
Type 'string | null' must have a '[Symbol.iterator]()' method that returns an iterator.
typecast Any ofc works but wanna do this properly,but haven't found what exactly TS wants me to do,while trying to search for an answer...现在就来这里吧,希望能得到指引。
谢谢!
3条答案
按热度按时间y0u0uwnf1#
使用TypeScript建议的类型:
ws51t4hk2#
好了,找到了解决问题的方法:
这段代码正确地类型转换,但也做检查“对象是可能的'空'”TS错误消息。
感谢大家的投入。学到了很多。
afdcj2ne3#
下面是另一个类型安全的,非常简单的解决方案:
const [full, id] = /.*media\/[^\/]+\/(.*)/.exec(item.uri) || []
然后你可以: