In my typescript express app, I am trying to retrieve a document from mongoDB and then cast that document to a type defined by an interface.
const goerPostsCollection = databaseClient.client.db('bounce_dev1').collection('goerPosts');
var currentGoerPosts = await goerPostsCollection.findOne({ goerId: currentUserObjectId }) as GoerPosts;
if (!currentGoerPosts) {
currentGoerPosts = CreateEmptyGoerPosts(currentUserObjectId);
}
and the interface is defined like this
export interface GoerPosts {
goerId: ObjectId;
numPosts: number;
posts: ObjectId[];
};
The code above has been working for me until I updated typescript from 4.4.4 to 4.5.2. Now the code no longer works and I get the error message:
[ERROR] 03:30:48 ⨯ Unable to compile TypeScript:
[posts] src/routes/create-post.ts(37,28): error TS2352: Conversion of type 'WithId<Document> | null' to type 'GoerPosts' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
[posts] Type 'WithId<Document>' is missing the following properties from type 'GoerPosts': goerId, numPosts, posts
I can probably just revert back to 4.4.4, but I am wondering if there is a better way to do this cleanly going forward.