Во-первых, переименуйте Products на Product, вы делаете модель продукта, а не продуктов.
Во-вторых, products должен содержать в себе ObjectID's чтобы вы потом могли сделать populate, не надо вам вложенных объектов.
В-третьих, попробуйте Typegoose в паре с
@nestjs-typegoose, вот там такая типизация прокатит.
UPD:
nestjs-typegoose
устарел и больше не поддерживается. Более того, там есть один критический недостаток. Я сделал свою обёртку для Typegoose в рамках NestJS.
NPM:
https://www.npmjs.com/package/kindagoose
GitHub:
https://github.com/GrapeoffJS/kindagoose