Pluralisation with inflect()

👋 FYI, this note is over 6 months old. Some of the content may be out of date.

Often nouns need slight changes depending on the quantity of that noun. Example: One person, several people. I call these differences “inflections”. The inflect function below is a little helper function I use to help me apply inflections in my application.

const inflect = (singular: string, plural = `${singular}s`) => {
return (quantity): string => {
Math.abs(quantity) === 1 ? singular : plural
}
}

inflect is a higher order function, meaning it’s a function that returns a function. If you need some info on higher order functions, check out my post on them and the post on currying.

This solution makes use of default parameters for the plural argument. If adding an “s” is all you need to make a plural, then you don’t need to provide it. Like this

// If you use this a lot, you can export this particular inflection
const inflectPost = inflect('post')

console.log(inflectPost(1)) // 'post'
console.log(inflectPost(2)) // 'posts'

But often plurals have oddities (like “person” and “people”), so you can supply a plural argument when you need it.

const inflectMouse = inflect('mouse', 'mice')
const inflectKnife = inflect('knife', 'knives')

Now, as helpful as this is, it is not a proper solution should you need internationalization. Treat this is a helper function for those instances this can support.


← Back home