Issue
I have a type:
type Item = {
cost: number | null
name: string
date: string | null
rating: number | null
}
Is there a way in TS to create a type based on Item
, which would have date
and rating
NonNullable
? I could do something like this:
type FullItem = Omit<Item, 'date' | 'rating'> & {
date: NonNullable<Item['date']>
rating: NonNullable<Item['rating']>
}
but it seems a bit cumbersome.
Solution
Ok, I just came up with a solution it seems:
type RequiredNotNull<T> = {
[P in keyof T]: NonNullable<T[P]>
}
type Ensure<T, K extends keyof T> = T & RequiredNotNull<Pick<T, K>>
type Item = {
cost: number | null
name: string
date: string | null
rating: number | null
}
type FullItem = Ensure<Item, 'rating' | 'date'>
Answered By - Vladyslav Zavalykhatko
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.