代码之家  ›  专栏  ›  技术社区  ›  Stuart Aitken

如何在Typescript中自动生成Javascript变量?

  •  1
  • Stuart Aitken  · 技术社区  · 6 年前

    我试图克服在react中使用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 加皮 根据需要。

    问题是我正在使用 打字稿

    Error: (TS) Cannot find name 'gapi'

    我怎样才能告诉Typescript gapi将存在?

    我以前也有过类似的值,可以是null,我通过

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

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

    对于告诉Typescript它将要查找并使用由外部源/API创建的javascript变量,是否有已知的解决方法?

    谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Explosion Pills    6 年前

    您可以添加 @types/gapi 将添加的类型定义 gapi 全局命名空间的类型安全。

    你也可以简单地声明 加皮 在全局命名空间中。例如:

    declare const gapi: any;
    

    @类型/gapi 基本上是为你做的。


    我不推荐它,但它在某些情况下使用起来很方便 // @ts-ignore 跳过下一行的类型检查的注释。你可以在一条线上做这个 加皮 但是上面的解决方案应该能更好地工作。

        2
  •  4
  •   Ahmed Kamal    6 年前

    你需要 @types gapi 运行 npm i -D @types/gapi