如何仅在flowtype中使用类属性来验证参数?
我有以下代码如何仅在flowtype中使用类属性来验证参数?,flowtype,Flowtype,我有以下代码 class User { id: string, name: string, email: string isAdmin: boolean, }; const isAdmin = (user: User): boolean => { if (user.isAdmin) return true; return false; } 我希望isAdmin接受另一个不是来自类User的对象,但它具有isAdmin属性 例如: isAdmin({
class User {
id: string,
name: string,
email: string
isAdmin: boolean,
};
const isAdmin = (user: User): boolean => {
if (user.isAdmin) return true;
return false;
}
我希望isAdmin接受另一个不是来自类User的对象,但它具有isAdmin属性
例如:
isAdmin({isAdmin: true})
可以使用结构类型:
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())
可以使用结构类型:
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())
您可以为此定义类型:
/* @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});
您可以看到正在运行的代码您可以为此定义一种类型:
/* @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});
您可以看到代码正在运行我认为这是唯一的方法,但我希望避免为此创建另一种类型。但是这是可行的,所以让我们继续\o/@SibeliusSeraphini,您可以“内联”该类型。看看阿里亚的答案。但就我个人而言,我更喜欢显式地为lisability创建类型。我认为这是唯一的方法,但我希望避免为此创建另一个类型。但是这是可行的,所以让我们继续\o/@SibeliusSeraphini,您可以“内联”该类型。看看阿里亚的答案。但就我个人而言,我更喜欢显式地为lisability创建类型。