输入 gapi.savetoandroidpay

Posted

技术标签:

【中文标题】输入 gapi.savetoandroidpay【英文标题】:Type for gapi.savetoandroidpay 【发布时间】:2020-03-09 11:00:51 【问题描述】:

我正在尝试将 Google Pay Passes 与 Typescript 一起使用。有一个包来定义类型:npm install --save @types/gapi 但我没有任何方法可以使用

gapi.savetoandroidpay.render("dom-container",
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
);

Here is the documentation

是我使用了错误的包还是缺少这个包?

【问题讨论】:

很可能,类型声明尚未更新以包含此方法。自己声明,然后创建一个 pr 以明确键入添加它 【参考方案1】:

我使用以下类型定义:

declare namespace gapi 
declare namespace gapi.savetoandroidpay 
  type ButtonHeight = "small" | "standard";
  type ButtonSize = "matchparent" | undefined;
  type ButtonTextSize = "large" | undefined;
  type ButtonTheme = "dark" | "light";

  type SuccessHandler = (detail:  walletObjectIds: string[] ) => void;
  type FailureHandler = (error: Error) => void;
  type ProvideJwtHandler = () => string;

  interface ButtonOptions 
    jwt: string;
    height?: ButtonHeight;
    size?: ButtonSize;
    textsize?: ButtonTextSize;
    theme?: ButtonTheme;

    onSuccess?: SuccessHandler;
    onFailure?: FailureHandler;
    onProvideJwt?: ProvideJwtHandler;
  

  function render(domId: string | Element, options: ButtonOptions): void;

您可以将此添加到项目中的gapi.savetoandroidpay.d.ts 文件中。

这个类型定义最初来自https://github.com/google-pay/save-to-google-pay-button/blob/main/src/lib/button-manager.ts

【讨论】:

【参考方案2】:

@types/gapi 包不包含对 Google Pay 实施的定义,例如 gapi.savetoandroidpay(截至 2019 年 11 月 26 日)。

在类型更新之前,我建议将 gapi 声明为您的 global.d.ts 或使用 gapi.savetoandroidpay.render() 的 TypeScript 文件中的类型。

sample.ts

declare var gapi: any;

const init=()=>
  gapi.savetoandroidpay.render("dom-container",
     "jwt": "JWT",
     "onsuccess": "successHandler",
     "onfailure": "failureHandler"
  );

需要注意的是,这只会抑制类型错误。

【讨论】:

以上是关于输入 gapi.savetoandroidpay的主要内容,如果未能解决你的问题,请参考以下文章

输入框小数位限制

为啥手机上的输入法在输入时突然没有了?点击输入框又弹出,输着又没了?怎么弄?安卓、搜狗、百度等...

jquery 怎么设置输入框只能输入数字

怎么让输入框只能输入数字和小数点?

Js如何实现 输入框的3秒内没输入就执行一个方法

输入法