TypeScript:即使strictNullChecks为false,我是否可以检查类型是否包含未定义的?

TypeScript:即使strictNullChecks为false,我是否可以检查类型是否包含未定义的?,typescript,undefined,strictnullchecks,Typescript,Undefined,Strictnullchecks,我们在redux初学者工具包中遇到了一个问题,库的一个用户禁用了检查,我们的一个类型测试是短循环,返回不同情况下的类型 此测试应返回True参数或False参数,具体取决于p参数是否包含undefined 这是当前代码: 类型ifmaybefundefined=[undefined]扩展[P]?真:假; 因此,我希望这两个选项都返回“是”: ifmaybeindefined 如果没有定义 现在我在问自己,是否有其他方法来测试这一点,即使是严格的零检查:false我认为这是不可能的 “stri

我们在redux初学者工具包中遇到了一个问题,库的一个用户禁用了检查,我们的一个类型测试是短循环,返回不同情况下的类型

此测试应返回True参数或False参数,具体取决于p参数是否包含undefined

这是当前代码:

类型ifmaybefundefined=[undefined]扩展[P]?真:假;
因此,我希望这两个选项都返回“是”:

ifmaybeindefined
如果没有定义

现在我在问自己,是否有其他方法来测试这一点,即使是严格的零检查:false

我认为这是不可能的

“strictNullChecks”这个名称有点误导,因为它可能表明它只是指示TypeScript编译器执行额外的检查并发出额外的警告。但是,它实际上改变了类型检查器的基本行为以及
null
undefined
类型的语义。根据

在严格的空检查模式下,空值和未定义值不在每种类型的域中,只能分配给它们自己和任何类型(一个例外是未定义值也可以分配给void)。因此,尽管T和T | undefined在常规类型检查模式中被视为同义词(因为undefined被视为任何T的子类型),但在严格类型检查模式中它们是不同的类型,只有T | undefined允许未定义的值。对于T与T | null的关系也是如此


这是有道理的。非常感谢。