2.0.0 • Published 3 years ago
ts-unreachable v2.0.0
Unreachable for TypeScript
Utility function for exhaustiveness checking with TypeScript.
Installation
npm install --save ts-unreachableUsage
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
undefinedinstead of throwing aTypeError.
Related Packages
Prior Art
- Npm
unreachablepackage - Rust
unreachablemacro