В проекте машинописи с полным стеком я * wi sh делюсь интерфейсом / типами, которые я использую в бэкэнд-проекте во внешнем проекте, чтобы избежать дублирования кода и сохранить согласованность.
В результате поиска я обнаружил, что это это можно сделать, имея третий «общий» проект с этими типами, а затем используя ссылочные проекты машинописи, чтобы включить его.
Таким образом, у меня был бы проект Frontend, проект Backend и общий проект, на который ссылалась бы первые два.
Хотя мои типы расширяют тип документа mon goose, ведьма привела бы к необходимости связывать mon goose в проекте внешнего интерфейса, чтобы использовать одни и те же типы в обоих frontend и backend.
Как правильно использовать эти интерфейсы / типы, не связывая дополнительные внутренние пакеты с внешним интерфейсом? (и сохраняя свойство _id, которое исходит от расширения Document, пока мы на нем).
RoadBook.ts (IRoadBook - это интерфейс / тип для совместного использования и схема mon goose, объявление модели)
import mongoose, {Schema,Model,Document} from 'mongoose';
export interface IRoadBook extends Document {
Name : string;
Description : string;
}
const RoadBookSchema = new Schema({
Name : {type : String, required : true, unique: true},
Description : {type : String }
});
export default mongoose.model<IRoadBook>('RoadBook',RoadBookSchema);
Может быть важно сослаться на то, что бэкэнд представляет собой простое приложение для машинописного текста / экспресс / мон goose и веб-приложение реакции на веб-интерфейс.
Спасибо заранее.