Function totality

A function is considered total when it is defined for all possible inputs.

Below is an example of a function that fails to meet this requirement.

type One = 1
type Two = 2
type Three = 3
type SumType = One | Two | Three

function fn(num: SumType): string {
    switch (num) {
        case 1: return '1'
        case 2: return '2'
            throw new Error('uh-oh, unexpected input (T⌓T)')

This function is not total because it throws an exception when given the input value 3 or any other value.

Thus, this function is partial.

To make it total, we must implement handling for the missing cases. Alternatively, we can utilize built-in JavaScript APIs.

function fn(num: SumType): string {
    return num.toString()

Striving to write total functions is a crucial step toward creating more resilient and bug-free software all of us can make.

You might be thinking, "But Aman, in my job project, our functions take complex objects as inputs. How can I ensure they're all total?"

Stay with me as we explore more principles and patterns of functional programming to provide you with solutions!