shared/numberUtils.ts (22 lines of code) (raw):

const num = 'zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen'.split( ' ', ); const tens = 'twenty thirty forty fifty sixty seventy eighty ninety'.split(' '); /* * returns the written words for a given number. * Note: number must be uint (positive integar) and between 0 - 999,999 */ export const number2words = (n: number): string => { if (n < 20) { return num[n]; } const digit = n % 10; if (n < 100) { return tens[~~(n / 10) - 2] + (digit ? '-' + num[digit] : ''); } if (n < 1000) { return ( num[~~(n / 100)] + ' hundred' + (n % 100 == 0 ? '' : ' and ' + number2words(n % 100)) ); } return ( number2words(~~(n / 1000)) + ' thousand' + (n % 1000 != 0 ? ' ' + number2words(n % 1000) : '') ); };