TypeScript:unknown参数检查时undefined与null为何被视为同类?
代码检查提示的原因解析
先看你写的判断条件:a != undefined && a != null,这里的关键是非严格不等运算符!=的类型转换规则。
在JavaScript/TypeScript里,null == undefined是成立的,反过来null != undefined就是false。所以当你写a != undefined时,这个条件已经同时排除了a是null和undefined的情况——只要a是这两个值中的任意一个,a != undefined都会返回false;反之,只要这个条件为true,a肯定既不是null也不是undefined,那后面的&& a != null必然永远为true,完全是多余的。
所以代码检查工具才会提示你可以简化,直接写成return a != null;或者return a != undefined;就行,这两种写法是完全等价的,都能准确判断a不是null也不是undefined。
另外补充一点:你的Something类型包含了string | number | boolean | object,但要注意,object类型在TypeScript里不包括原始类型的包装对象(比如String实例),不过这和当前的代码检查提示无关,只是个小提醒。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

