ts-unreachable
v2.0.0
Published
Utility function for exhaustiveness checking with TypeScript.
Downloads
177
Maintainers
Readme
Unreachable for TypeScript
Utility function for exhaustiveness checking with TypeScript.
Installation
npm install --save ts-unreachable
Usage
import unreachable from 'ts-unreachable'
type Shape =
| { kind: 'square', size: number }
| { kind: 'rectangle', width: number, height: number }
| { kind: 'circle', radius: number }
function area (shape: Shape): number {
if (shape.kind === 'square') {
return shape.size ** 2
}
if (shape.kind === 'rectangle') {
return shape.height * shape.width
}
if (shape.kind === 'circle') {
return Math.PI * shape.radius ** 2
}
return unreachable(shape) // (1)
}
Without the final call to unreachable, TypeScript would report the following error:
Function lacks ending return statement and return type does not include 'undefined'. (2366)
Calling the function with an invalid kind from JavaScript would also return
undefined
instead of throwing aTypeError
.
Related Packages
Prior Art
- Npm
unreachable
package - Rust
unreachable
macro