Я работаю над приложением nodemailer с gmail OAuth2
на TypeScript, с "noImplicitAny": true,"noImplicitReturns": true
. Это требует, чтобы я явно указывал типы возвращаемых значений.
У меня есть этот фрагмент
import { google } from 'googleapis';
export const getOAuth2Client = (): OAuth2Client => { // 2. So I set the return type as OAuth2Client
const { OAuth2 } = google.auth;
const auth2Client = new OAuth2(
process.env.G_OAUTH_CLIENT_ID,
process.env.G_OAUTH_CLIENT_SECRET,
process.env.G_OAUTH_REDIRECT_URL
);
auth2Client.setCredentials({
/* eslint-disable @typescript-eslint/camelcase */
refresh_token: process.env.G_OAUTH_REFRESH_TOKEN,
});
return auth2Client; // 1. Inspecting auth2Client shows its of type OAuth2Client
};
Я получил тип OAuth2Client
при проверке типа возвращаемого auth2Client
. Проблема, однако, в том, откуда его импортировать и использовать в проекте.
Я пробовал следующее ...
import { google, OAuth2Client } from 'googleapis';
Это не удается, поскольку googleapis
не имеет такого именованного экспорта.
Я также видел этот подход из @ ответ corolla , где он импортирует типы из google-auth-library
import { OAuth2Client } from 'google-auth-library';
Я бы использовал sh, чтобы использовать тип без необходимость добавления другой библиотеки в качестве зависимости только для одного типа для уже типизированной библиотеки (так же, как googleapis
использует типы из google-auth-library
под капотом, линтер проекта требует, чтобы я перечислил ее как зависимость проекта, что я бы не стал 'не будет sh пока делать). Есть ли другой способ go об этом, пожалуйста.
Спасибо.