我在使用.split()对数组项执行操作时遇到问题,因为FLOW认为它可能未定义。
export const getTokenFromCookieRes = (cookies: string[]): mixed => {
if (!cookies) {
return undefined
}
if (0 in cookies) {
return cookies[0] // cookies[0] returns an error for possibly being undefined
.split(';')
.find(c => c.trim().startsWith('jwt='))
.split('=')[1]
} else {
return undefined
}
}
答案 0 :(得分:3)
问题不在于cookies[0]
可能是undefined
;这是find()
的结果可能是undefined
。在尝试在字符串上调用find()
之前,您需要检查split()
的结果。
const getTokenFromCookieRes = (cookies?: string[]): mixed => {
if (!cookies) {
return undefined
}
if (!!cookies[0]) {
const jwt = cookies[0] // No issues here
.split(';')
.find(c => c.trim().startsWith('jwt='))
return jwt && jwt.split('=')[1];
}
}