API reference › @evolu/common › Type › PhoneNumberE164
type PhoneNumberE164 = string & Brand<"PhoneNumberE164">;
Defined in: packages/common/src/Type.ts:9683
International phone number in ITU-T E.164 format.
PhoneNumberE164 accepts a + followed by 7 to 15 ASCII digits, the first of
which is not zero, such as +14155552671. E.164 limits numbers to 15 digits,
and no country code starts with zero. The 7-digit minimum admits the shortest
numbering plans.
The check is structural only. PhoneNumberE164 does not check country codes or
national numbering plans, which are large and changing metadata, so a valid
value is not necessarily an assigned number. It does not normalize either:
spaces, hyphens, parentheses, a 00 international prefix, and extensions are
rejected. Format user input to E.164 with a library such as libphonenumber
before validating it.
Example
import {
assertEqual,
assertErr,
assertOk,
PhoneNumberE164,
} from "@evolu/common";
assertOk(PhoneNumberE164.fromUnknown("+14155552671"), "+14155552671");
const invalid = PhoneNumberE164.fromUnknown("+1 415 555 2671");
assertErr(invalid);
assertEqual(invalid.error, {
type: "PhoneNumberE164",
value: "+1 415 555 2671",
});