Я использую clasp , который позволяет вам разрабатывать скрипт Google Apps в машинописном тексте.
В своем скрипте я конвертирую лист Google в Blob of PDF, а затем загружаю егов Google Drive.
Код работает нормально, но у меня возникают проблемы при работе с типами Blob против BlobSource , чтобы обеспечить удовлетворение TypeScript.
Настройка
В начале моего файла я объявил некоторые сокращения типа, подобные этому:
type Sheet = GoogleAppsScript.Spreadsheet.Sheet;
type SS = GoogleAppsScript.Spreadsheet.Spreadsheet;
type GBlob = GoogleAppsScript.Base.Blob;
type GBlobSource = GoogleAppsScript.Base.BlobSource;
У меня есть функция с этой подписью:
getPdfBlob(sheet: Sheet, pdfName: string): GBlob
Я делаю что-то подобное в своем коде:
var pdfBlob = getPdfBlob(mySheet, 'aPdfName');
var file = DriveApp.createFile(pdfBlob);
Проблема
Моя IDE жалуется, что DriveApp.createFile
хочет ввести в качестве параметра BlobSource
, а не Blob
.
Если я попытаюсь привести Blob к BlobSource следующим образом:
var file = DriveApp.createFile(<GBlobSource>pdfBlob);
Моя IDE жалуется:
Преобразование типа 'Blob' в тип 'BlobSource' может бытьошибка, потому что ни один тип не совпадает с другим.Если это было сделано намеренно, сначала преобразуйте выражение в «unknown».
Свойство getBlob отсутствует в типе «Blob», но требуется в типе «BlobSource».
Как яупомянутый код работает нормально таким образом.Я просто хочу, чтобы мои объявления типов были правильными, поэтому TypeScript продолжает добавлять значение.
Из документации похоже, что Blob
реализует BlobSource
, поэтому я 'Я не уверен, почему я не могу «переориентировать» обратно на BlobSource
.Может ли это быть ошибкой в определениях TypeScript?
Любая информация о проблеме здесь / правильном способе ее решения будет принята с благодарностью.