Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Typescript中自动创建Javascript变量?_Javascript_Typescript - Fatal编程技术网

如何在Typescript中自动创建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

我试图克服在react中使用Google登录API的问题

该问题是由用户已登录会话引起的,这意味着不需要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,所以上面的代码需要硬输入。因此,它给出了一个错误:

错误:(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
的更广泛解决方案要好得多。谢谢