代码之家  ›  专栏  ›  技术社区  ›  Diego

从导入的类型重命名接口

  •  0
  • Diego  · 技术社区  · 3 年前

    Advanced Calendar Service type definitions for Apps Script 在TypeScript项目中?

    我不想直接修改类型定义文件,因为它是一个已安装的npm包。

    // ./node_modules/@types/google-apps-script/apis/calendar_v3.d.ts
    // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/google-apps-script/apis/calendar_v3.d.ts
    
    declare namespace GoogleAppsScript {
      namespace Calendar {}
      interface Calendar {}
    }
    
    declare var Calendar: GoogleAppsScript.Calendar;
    

    从目前的情况来看,命名产生了两个问题:

    1. TypeScript编译器没有正确地获取高级服务的用法
    2. 我不能有一个全球性的 Calendar (可能是一个可以单独处理的问题,但我想用这个名字)
    class Calendar {
      id: string;
      constructor(id) {
        this.id = id;
      }
    
      getEvent(eventId): GoogleAppsScript.Calendar.Schema.Event {
        // TypeScript cannot find `CalendarService`
        return CalendarService.Events.get(this.id, eventId);
      }
    }
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   Diego    3 年前

    使用 patch-package 提交对类型定义文件的更改,该文件允许:

    • Calendar 变量到 CalendarService
    • 在项目中应用和共享更改的可视化和自动化方式。

    要设置:

    1. npm i patch-package --save-dev

    2. "postinstall": "patch-package" 打包.json脚本

    3. 重命名类型定义文件中声明的变量:

      -declare var Calendar: GoogleAppsScript.Calendar;
      +declare var CalendarService: GoogleAppsScript.Calendar;
      
    4. npx patch-package @types/google-apps-script