Skip to content

dividab/ts-exhaustive-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ts-exhaustive-check

npm version MIT license

Exhaustive check for typescript type never.

Description

This package has a single function called exhaustiveCheck that just checks if a typescript type is of type never.

It will save you one line of code in the default case of switch statements if you have strictNullChecks enabled.

For more information see discriminated-unions and typescript issue 6155.

Usage

yarn add ts-exhaustive-check
import { exhaustiveCheck } from "ts-exhaustive-check";

interface Square {
  kind: "square";
  size: number;
}

interface Rectangle {
  kind: "rectangle";
  width: number;
  height: number;
}

interface Circle {
  kind: "circle";
  radius: number;
}

type Shape = Square | Rectangle | Circle;

function area(s: Shape) {
  switch (s.kind) {
    case "square":
      return s.size * s.size;
    case "rectangle":
      return s.width * s.height;
    case "circle":
      return Math.PI * s.radius * s.radius;
    default:
      return exhaustiveCheck(s);
  }
}

Without this package the default case in the switch statement would have been this:

function area(s: Shape) {
  switch (s.kind) {
    ...
    default:
      const _exhaustiveCheck: never = s;
      return _exhaustiveCheck;
  }
}

About

Exhaustive check for typescript type never

Resources

License

Stars

Watchers

Forks

Packages

No packages published