2017-06-20 68 views
0

我在使用.split()對數組項執行操作時遇到問題,因爲FLOW認爲它可能未定義。流類型數組undefined

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

回答

3

的問題不在於cookies[0]可能undefined;這就是find()的結果可能是undefined。在嘗試撥打字符串split()之前,您需要檢查find()的結果。

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]; 
    } 
} 
+0

謝謝 - 不得不把它們放在不同的函數中來返回值 - 但它的工作! –