Typescript в основном не знает, что что-то вводит в какой-то другой модуль некоторые дополнительные значения.
Я решал подобную проблему в экспрессе. Для выражения req: express.Request
мне нужно ввести state
, чтобы я мог использовать свой пользовательский req.state
через промежуточное ПО.
Это хак:
import { State } from './index';
declare module 'express' {
interface Request {
state: State;
}
}
(Государство - просто модель машинописи):
export type State = {
correlationId?: string;
sessionId?: string;
logger: Logger;
out: any;
};
Я думаю, что вы можете сделать что-то вроде (давайте попробуем, если не работает, исправим и, если вы сделаете это, напишите правильное решение, чтобы другие могли его использовать)
declare module 'mongoose' {
interface Model {
authenticate: Function;
}
}
Также есть одно «хакерское» решение - просто сохраните его в переменной :any
и затем используйте его, машинопись не контролирует с ней ничего (что, с другой стороны, также не идеально, поскольку вы теряете некоторые преимущества использования машинописи) - но если это только для небольшой части приложения, вы можете сделать это)
import { User } from "./schemas/user";
let passport = require("passport");
const userThatCanDoAnything: any = User;
passport.use(new localstrategy(userThatCanDoAnything.authenticate()));