流类型数组未定义

时间:2017-06-20 18:00:25

标签: types flowtype

我在使用.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
  }
}

tryflow

1 个答案:

答案 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];
  } 
}