Skip to content
← Back to rules

typescript/strict-boolean-expressions Pedantic

💭 This rule requires type information.
🚧 An auto-fix is planned for this rule, but not implemented at this time.

何をするか

Disallow certain types in boolean expressions.

なぜ問題なのか

Forbids usage of non-boolean types in expressions where a boolean is expected. boolean and never types are always allowed. Additional types which are considered safe in a boolean context can be configured via options.

The following nodes are checked:

  • Arguments to the !, &&, and || operators
  • The condition in a conditional expression (cond ? x : y)
  • Conditions for if, for, while, and do-while statements.

このルールで適合しないコード例:

ts
const str = "hello";
if (str) {
  console.log("string");
}

const num = 42;
if (num) {
  console.log("number");
}

const obj = { foo: "bar" };
if (obj) {
  console.log("object");
}

declare const maybeString: string | undefined;
if (maybeString) {
  console.log(maybeString);
}

const result = str && num;
const ternary = str ? "yes" : "no";

このルールで適合するコード例:

ts
const str = "hello";
if (str !== "") {
  console.log("string");
}

const num = 42;
if (num !== 0) {
  console.log("number");
}

const obj = { foo: "bar" };
if (obj !== null) {
  console.log("object");
}

declare const maybeString: string | undefined;
if (maybeString !== undefined) {
  console.log(maybeString);
}

const bool = true;
if (bool) {
  console.log("boolean");
}

設定

このルールは、次のプロパティを持つ設定オブジェクトを受け付けます。

allowAny

型: boolean

既定値: false

Whether to allow any type in boolean contexts.

allowNullableBoolean

型: boolean

既定値: false

Whether to allow nullable boolean types (e.g., boolean | null) in boolean contexts.

allowNullableEnum

型: boolean

既定値: false

Whether to allow nullable enum types in boolean contexts.

allowNullableNumber

型: boolean

既定値: false

Whether to allow nullable number types (e.g., number | null) in boolean contexts.

allowNullableObject

型: boolean

既定値: true

Whether to allow nullable object types in boolean contexts.

allowNullableString

型: boolean

既定値: false

Whether to allow nullable string types (e.g., string | null) in boolean contexts.

allowNumber

型: boolean

既定値: true

Whether to allow number types in boolean contexts (checks for non-zero numbers).

allowString

型: boolean

既定値: true

Whether to allow string types in boolean contexts (checks for non-empty strings).

使い方

To enable this rule using the config file or in the CLI, you can use:

json
{
  "options": {
    "typeAware": true
  },
  "rules": {
    "typescript/strict-boolean-expressions": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  options: { typeAware: true },
  rules: {
    "typescript/strict-boolean-expressions": "error",
  },
});
bash
oxlint --type-aware --deny typescript/strict-boolean-expressions

バージョン

このルールは v1.25.0 で追加されました。

参考