2017-07-26 48 views
0

我有以下代碼如何僅使用flowtype中的類屬性來驗證參數?

class User { 
    id: string, 
    name: string, 
    email: string 
    isAdmin: boolean, 
}; 

const isAdmin = (user: User): boolean => { 
    if (user.isAdmin) return true; 

    return false; 
} 

我想這isAdmin接受另一個對象,它是不是由類用戶,但它已isAdmin財產。

例如:

isAdmin({isAdmin: true}) 

回答

5

您可以定義一個類型:

/* @flow */ 

class User { 
    id: string; 
    name: string; 
    email: string; 
    isAdmin: boolean; 
}; 

type HasAdmin = { 
    isAdmin: boolean; 
} 

const isAdmin = (hasAdmin: HasAdmin): boolean => { 
    if (hasAdmin.isAdmin) return true; 

    return false; 
} 

isAdmin(new User()); 

isAdmin({isAdmin: true}); 

你可以看到在行動here

代碼
+0

我認爲這是th只有這樣,但我想避免爲此創建另一種類型。然而,這個工作,所以讓我們繼續\\/ –

+1

@SibeliusSeraphini你可以「內聯」的類型。看看亞里亞的答案。但個人而言,我更願意明確創建類型爲可讀性。 –

1

您可以使用結構類型:

class User { 
    id: string 
    name: string 
    email: string 
    isAdmin: boolean 
}; 

const isAdmin = (user: {isAdmin: boolean}): boolean => { 
    if (user.isAdmin) return true; 

    return false; 
} 

isAdmin({isAdmin: true}) 
isAdmin(new User()) 
相關問題