【发布时间】:2021-04-06 09:39:26
【问题描述】:
我有这个组件:
<GoogleLogin
clientId={googleAppId}
onSuccess={responseGoogle}
onFailure={responseGoogle}
isSignedIn={true}
cookiePolicy={"single_host_origin"}
autoLoad={false}
icon={true}
/>
其onSuccess 和onFailure 道具的以下功能:
const responseGoogle = (
response: GoogleLoginResponse | GoogleLoginResponseOffline
) => {
console.log(response.accessToken);
};
我只想使用response: GoogleLoginResponse 类型,但如果这样做,我会从库中收到以下错误:
Type '(response: GoogleLoginResponse) => void' is not assignable to type '(response: GoogleLoginResponse | GoogleLoginResponseOffline) => void'
所以我使用response: GoogleLoginResponse | GoogleLoginResponseOffline作为参数。
问题是当我尝试访问GoogleLoginResponse 类型的属性accessToken 时,出现以下错误,因为accessToken 不是GoogleLoginResponseOffline 的属性:
Property 'accessToken' does not exist on type 'GoogleLoginResponse | GoogleLoginResponseOffline'.
Property 'accessToken' does not exist on type 'GoogleLoginResponseOffline'.
如何访问accessToken 的response 属性?
注意事项:
- 我正在使用以下 React 库:https://www.npmjs.com/package/react-google-login。
- 我不使用
response: any,因为这不是一个好的做法。 -
GoogleLoginResponse和GoogleLoginResponseOffline类型定义:https://github.com/anthonyjgrove/react-google-login/blob/master/index.d.ts。
【问题讨论】:
-
“我只想使用类型...”——为什么?如果不是那个怎么办?您是否以某种方式知道这不可能发生?
-
文档表明您可以为
GoogleLogin组件使用accessType="online"或accessType="offline"属性(默认为“在线”)。由于我使用的是accessType="online",因此响应将是GoogleLoginResponse类型。更多详情:github.com/anthonyjgrove/….
标签: reactjs typescript