我有一个对象字面量,想为该特定对象的类型编写类型保护。
我的对象如下所示:
const typeDictator = {
value: undefined as number | undefined | string,
}
所以如果我没有弄错我的对象的类型应该导致
{value: number | undefined | string}
但是每当我像这样为它编写类型保护时:
function generic<T>(obj: unknown, type: T): obj is T {
return true;
}
并使用
检查类型const typedObject = null;
if(generic(typedObject, typeDictator)) {
typedObject
}
然后将 typedObject
的类型简化为 {value: number | string}
。
但为什么它会删除 undefined
或 null
联合类型并更改任何相关内容?
答案 0 :(得分:1)
尝试将 "strict": true,
添加到您的 tsconfig。如果您的 tsconfig 过于宽松(或完全缺失),则将从类型中删除 null 和 undefined。