Skip to content

Optional ESLint config

The @kensio/smartass package also exports an optional ESLint flat config that discourages less specific assertion usage. For example:

assertIdentical(foo.length, 2);
// suggested improvement:
assertArrayLength(foo, 2);

You can use this in your ESLint config like this:

import { defineConfig } from "eslint/config";
import tseslint from "typescript-eslint";
import { smartassPreferSpecificAssertions } from "@kensio/smartass/eslint";
export default defineConfig(
...tseslint.configs.recommended,
...smartassPreferSpecificAssertions,
);

Some more examples of the replacements that the ESLint rules will suggest:

  • assertIdentical(value, true)assertTrue(value)
  • assertIdentical(value, false)assertFalse(value)
  • assertIdentical(value, undefined)assertUndefined(value)
  • assertTrue(value != null)assertNonNullable(value)
  • assertIdentical(typeof value, "string")assertTypeString(value)
  • assertIdentical(value instanceof MyClass, true)assertInstanceOf(value, MyClass)
  • assertIdentical("key" in object, true)assertObjectHasProperty(object, "key")
  • assertIdentical(value.length, expected)assertArrayLength() etc.
  • assertIdentical(value.size, expected)assertSetSize() etc.
  • assertTrue(array.length > 0)assertArrayNotEmpty(array)
  • assertTrue(value.includes(expected))assertStringIncludes() etc.
  • assertTrue(value.startsWith(prefix))assertStringStartsWith(value, prefix)
  • assertTrue(value.endsWith(suffix))assertStringEndsWith(value, suffix)
  • assertTrue(stats.isDirectory())assertDirectoryExists() etc.