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?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…