Reports typeof expressions that compare impossible string literals.
✅ This rule is included in the ts untyped presets.
The typeof operator in JavaScript returns one of a specific set of string values: "bigint", "boolean", "function", "number", "object", "string", "symbol", or "undefined".
Comparing the result of typeof to any other string literal is usually a typo and the comparison will never be true.
This rule enforces that typeof expressions are only compared to valid string literals.
Error ts(2367) ― This comparison appears to be unintentional because the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"strnig"' have no overlap.
const processString:any
processString(
const value:object
value);
}
if (typeof
const callback:any
callback!=="fucntion") {
Error ts(2367) ― This comparison appears to be unintentional because the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"fucntion"' have no overlap.
Error ts(2367) ― This comparison appears to be unintentional because the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"undefimed"' have no overlap.
const initialize:any
initialize();
}
if (typeof
const count:any
count==="nunber") {
Error ts(2367) ― This comparison appears to be unintentional because the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"nunber"' have no overlap.
If your project is a rare one that operates on non-standard objects, such as ancient versions of obscure browsers, this rule might not benefit you.
For all other projects, using either this rule or a full type-checker should always be done.