我正在尝试解决使用Google登录API进行响应的问题。

该问题是由于用户已经具有登录会话而引起的,这意味着不需要该API,可以将其忽略。 Javascript中的解决方案如下所示:

const auth = gapi.auth2.getAuthInstance();

if (!auth.isSignedIn.get()) {
   auth.signIn().then(() =>
        // Do login stuff
    );
} else {
   // Get old signIn data
}


问题在第一行。 gapi变量是在自动调用Google登录API之后创建的。动态键入在这里似乎很有用,因为它只是根据需要查找gapi

问题是我正在使用Typescript,因此上面的代码需要进行严格的键入。因此,它给出了一个错误:

Error: (TS) Cannot find name 'gapi'

我怎样才能告诉Typescriptgapi将会存在?

我以前有过类似的可能是null的值,我可以通过克服

if(value == null){
    //do nothing
} else {
    //use the value;
    }


但是这里的问题是我会说if(gapi == null)仍然给出Cannot find name gapi错误。

是否有一种已知的解决方法来告知Typescript将要查找并使用由外部源/ API创建的javascript变量?

谢谢。

最佳答案

您可以添加@types/gapi类型定义,这会将具有类型安全性的gapi添加到全局名称空间。

您也可以自己在全局名称空间中简单地声明gapi。例如:

declare const gapi: any;


但是,这不会为您提供输入安全性。如果认为合适,则可以添加自己的类型定义,但是@types/gapi基本上已经为您完成了此操作。



我不推荐这样做,但是在某些情况下使用// @ts-ignore注释可以跳过下一行的类型检查,因此非常方便。您可以在使用gapi的行上方执行此操作,但是上述解决方案应该可以更好地工作。

关于javascript - 如何在Typescript中自动创建Javascript变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53671031/

10-11 07:00