Как я могу получить интерфейс объекта в машинописи? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать класс, который обрабатывает gmail для меня, проблема в том, что я хотел бы, чтобы машинописный текст имел смысл для указанного объекта. Однако это не дает мне набрать для объекта Google, который я пытаюсь создать в конструкторе:

class Gmail {
    private auth: any;
    google = null;
    messageList: emailListType = ('' as unknown) as emailListType;
    constructor(auth) {
        this.google = google.gmail({ version: 'v1', auth: this.auth }).users;
    }
    async getEmailsInLabel(label: string) {
        //@ts-ignore
        this.messageList = await this.google.messages.list({
            labelIds: [label],
            userId: 'me',
        });
    }
}

Я также попытался go к определению типа этой функции, и нашел это :

import { AuthPlus } from 'googleapis-common';
import { gmail_v1 } from './v1';
export declare const VERSIONS: {
    'v1': typeof gmail_v1.Gmail;
};
export declare function gmail(version: 'v1'): gmail_v1.Gmail;
export declare function gmail(options: gmail_v1.Options): gmail_v1.Gmail;
declare const auth: AuthPlus;
export { auth };

Кажется, что объект Google имеет тип gmail_v1.Gmail. Однако всякий раз, когда я пытаюсь импортировать, интерфейс машинного интерфейса gmail_v1.Gmail говорит, что я не могу импортировать из файлов d.ts.

Я также пробовал это:

class Gmail {
        private auth: any;
        google = google.gmail({ version: 'v1', auth: this.auth }).users;
        messageList: emailListType = ('' as unknown) as emailListType;
        constructor(auth) {
            this.auth = auth;
        }
        async getEmailsInLabel(label: string) {
            //@ts-ignore
            this.messageList = await this.google.messages.list({
                labelIds: [label],
                userId: 'me',
            });
        }
    }

работает для набора текста, но не запускает функцию, но ставит вопрос спорным, я также пытался переназначить свойство google внутри конструктора, делая равным выполнение функции google.gmail: не работает.

TLDR: Как установить тип свойства google в моем классе в соответствии с типом интерфейса gmail_v1.Gmail? Как получить интерфейс объекта из внешней библиотеки? Каковы лучшие практики для создания классов, подобных этому, чтобы конструктор передавал типы в свойства?

1 Ответ

0 голосов
/ 24 апреля 2020

Глядя на код , кажется, что интерфейс, который вы ищете, не экспортируется библиотекой. Если он не экспортируется, вы не можете импортировать его.

Вы не можете импортировать файлы объявлений (.d.ts). Они используются инструментами, такими как редакторы, для проверки кода и помощи разработчикам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...