Определение TypeScript для `gapi.client.storage` не учтено - PullRequest
0 голосов
/ 23 октября 2019

TypeScript говорит мне, что "свойство 'storage' не существует в типе 'typeof client'" при вызове gapi.client.storage.buckets.list().

Это в контексте приложения Vue.js (не уверен, что это имеет значение), Я использую библиотеку GAPI.

Я установил пакеты @types/gapi, @types/gapi.auth2, @types/gapi.client и @types/gapi.client.storage, и TypeScript правильно распознает типы при вызовах, такие как gapi.load(),gapi.client.init() или gapi.auth2.getAuthInstance().

Однако, независимо от того, что я пробовал, всегда выдается ошибка при моем gapi.client.storage.buckets.list() вызове:

ERROR in /Users/olance/Dev/project/src/views/Editor.vue(29,38):
29:38 Property 'storage' does not exist on type 'typeof client'.
    27 |
    28 |   async mounted() {
  > 29 |     this.buckets = await gapi.client.storage.buckets.list({ project: "storage-cloud-editor" });
       |                                      ^
    30 |   }
    31 |
Version: typescript 3.5.3

Прямо сейчас, мой tsconfig.json файл содержит в compilerOptions следующее:

"typeRoots": [
      "node_modules/@types"
    ],
    "types": [
      "webpack-env", "vuetify", "gapi", "gapi.auth2", "gapi.client.storage", "gapi.client"
    ],

По умолчанию он был настроен на "types": ["webpack-env"], так что это единственный способ заставить работать все, даже если документация кажетсяпредложить typeRoots и types было бы своего рода исключением.
Удаление одного или обоих параметров приводит к сбою компилятора в других частях кода (в основном это относится к vuetify, который не объявляет типы в @types).

Чего не хватает, чтобы TypeScript знал о gapi.client.storage определения?

...