Reputation: 49
I have an object literal and want to write a type guard for the type of that specific object.
My object looks as follows:
const typeDictator = {
value: undefined as number | undefined | string,
}
so if I'm not mistaken the type for my object should result in
{value: number | undefined | string}
but whenever I write a type guard for it like this:
function generic<T>(obj: unknown, type: T): obj is T {
return true;
}
and check the type with
const typedObject = null;
if(generic(typedObject, typeDictator)) {
typedObject
}
then the type of typedObject
is reduced to {value: number | string}
.
But why does it remove the undefined
or null
union-types and does it change anything relevant?
Upvotes: 0
Views: 652
Reputation: 1023
Try adding "strict": true,
to your tsconfig. If your tsconfig is too permissive (or missing altogether), then null and undefined will be removed from types.
Upvotes: 1