I upgrade mongoose version to 6 and i found...
import {
getModelForClass,
} from "@typegoose/typegoose";
export const ProductModel = getModelForClass(Product); // this give me mongoose model type from my class
const product = new Product();
const A = new ProductModel(product) // A is not DocumentType it is just Product...
const B = new ProductModel({...product}) // B is DocumentType But why?
This Question was also asked in the Github Discussions and resolved there
TL;DR: This issue of being different types seems to be from typescript 4.3, upgrading to typescript 4.4 fixed it