我正在使用带有TypeScript的React Native来构建应用程序。我正在围绕React Native Keychain包的功能编写自己的自定义包装。
export const getToken = () => getGenericPassword().then(creds => creds.password);
问题在于getGenericPassword()
的类型是:
function getGenericPassword(
options?: Options
): Promise<boolean | {service: string, username: string, password: string}>;
我的linter抱怨说,如果凭据的类型为boolean
,则密钥密码不存在。
Property 'password' does not exist on type 'boolean | { service: string; username: string; password: string; }'.
Property 'password' does not exist on type 'false'.
如何选择这些值之一?
答案 0 :(得分:2)
如果该值为布尔值,则不具有这些属性。您必须首先处理结果是布尔值的情况:
if (typeof creds == "boolean") {
// Handle a boolean result
} else {
// You can access the fields here
}
TypeScript理解在if
分支内,结果是布尔值,而在else
分支内,结果不是布尔值,因此它必须是您的字典类型。
如果Typescript不能像这样工作,那么您可以编写代码来忽略Promise返回布尔值的情况,并且稍后当您尝试从{{ 1}}