TypeScript 2.7 brought support for numeric separators as outlined in the Numeric Separators ECMAScript proposal. Within a numeric literal, you can now group digits by putting an underscore as a separator character between them:
const worldPopulationIn2017 = 7_600_000_000;
const leastSignificantByteMask = 0b1111_1111;
const papayawhipColorHexCode = 0xFF_EF_D5;
The separators don't change the value of a numeric literal, but the logical grouping makes it easier for humans to read the number at a glance. Check out Axel Rauschmayer's post ES Proposal: Numeric Separators for more details and some restrictions of numeric separators.
Downleveling Numeric Literals with Separators
target set to
const worldPopulationIn2017 = 7600000000;
const leastSignificantByteMask = 255;
const papayawhipColorHexCode = 16773077;
At the time of writing, TypeScript never emits the separator characters, no matter which language level we're targeting (including
--target esnext). Also, if you're using a numeric separator, the numeric literal will be emitted in decimal form, even if the target ECMAScript version supports binary, octal, or hexadecimal literals (as ES2015 does, for example).
However, the TypeScript team is considering emitting numeric literals as they are (to the degree supported by
This post is part of the TypeScript Evolution series.