如何在Typescript中自动创建Javascript变量?
我试图克服在react中使用Google登录API的问题 该问题是由用户已登录会话引起的,这意味着不需要API,可以忽略该API。Javascript中的解决方案如下所示:如何在Typescript中自动创建Javascript变量?,javascript,typescript,Javascript,Typescript,我试图克服在react中使用Google登录API的问题 该问题是由用户已登录会话引起的,这意味着不需要API,可以忽略该API。Javascript中的解决方案如下所示: const auth = gapi.auth2.getAuthInstance(); if (!auth.isSignedIn.get()) { auth.signIn().then(() => // Do login stuff ); } else { // Get old s
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,所以上面的代码需要硬输入。因此,它给出了一个错误:
错误:(TS)找不到名称“gapi”
我如何告诉Typescript gapi将存在
我以前也遇到过类似的情况,值可能为null,我通过
if(value == null){
//do nothing
} else {
//use the value;
}
但这里的问题是,我要说的是if(gapi==null)
,它仍然给出了找不到名称gapi
的错误
对于告诉Typescript它将要查找并使用由外部源/API创建的javascript变量,是否有已知的解决方法
谢谢。您需要
gapi的@types
运行npm i-D@types/gapi
来安装它。您需要gapi的@types
运行npm i-D@types/gapi
来安装它。您可以添加@types/gapi
类型定义,它将添加gapi
全局命名空间的安全性
您也可以自己在全局名称空间中简单地声明gapi
。例如:
declare const gapi: any;
但是,这不会给您提供类型安全性。如果您认为合适,您可以添加自己的类型定义,但是@types/gapi
基本上已经为您完成了这项工作
我不推荐使用它,但在某些情况下,使用/@ts ignore
注释跳过下一行的类型检查会很方便。您可以在使用gapi
的行上方执行此操作,但上述解决方案应该会更好。您可以添加@types/gapi
类型定义,这将向全局命名空间添加具有类型安全性的gapi
您也可以自己在全局名称空间中简单地声明gapi
。例如:
declare const gapi: any;
但是,这不会给您提供类型安全性。如果您认为合适,您可以添加自己的类型定义,但是@types/gapi
基本上已经为您完成了这项工作
我不推荐使用它,但在某些情况下,使用/@ts ignore
注释跳过下一行的类型检查会很方便。您可以在使用gapi
的行上方执行此操作,但上面的解决方案应该会更好。此答案的票数较少,但我认为它的信息量更大。有时,Typescript中无法使用@types
,因此将全局声明为any
的更广泛解决方案要好得多。谢谢。这个答案的票数较少,但我认为它的信息量要大得多。有时,Typescript中无法使用@types
,因此将全局声明为any
的更广泛解决方案要好得多。谢谢