我正在尝试解决使用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/