diff --git a/lexers/embedded/typescript.xml b/lexers/embedded/typescript.xml
index b39c964..2e15ab4 100644
--- a/lexers/embedded/typescript.xml
+++ b/lexers/embedded/typescript.xml
@@ -275,13 +275,19 @@
-
+
-
+
+
+
+
+
+
+
-
+
diff --git a/lexers/testdata/typescript/number_literals.actual b/lexers/testdata/typescript/number_literals.actual
new file mode 100644
index 0000000..652a388
--- /dev/null
+++ b/lexers/testdata/typescript/number_literals.actual
@@ -0,0 +1,19 @@
+const mode = 0o644;
+0O755
+0b1010
+0B1010
+0xff
+0XFF
+1e5
+1E5
+1e+5
+1e-5
+1.5
+1.
+1.5e10
+2.5E-3
+1_000
+1_000_000
+42
+0
+const total = 0XFF + 1e-5 * 1_000;
diff --git a/lexers/testdata/typescript/number_literals.expected b/lexers/testdata/typescript/number_literals.expected
new file mode 100644
index 0000000..6c067c7
--- /dev/null
+++ b/lexers/testdata/typescript/number_literals.expected
@@ -0,0 +1,62 @@
+[
+ {"type":"KeywordReserved","value":"const"},
+ {"type":"Text","value":" "},
+ {"type":"NameOther","value":"mode"},
+ {"type":"Text","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"Text","value":" "},
+ {"type":"LiteralNumberOct","value":"0o644"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberOct","value":"0O755"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberBin","value":"0b1010"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberBin","value":"0B1010"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberHex","value":"0xff"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberHex","value":"0XFF"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1e5"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1E5"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1e+5"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1e-5"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1.5"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1."},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"1.5e10"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberFloat","value":"2.5E-3"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberInteger","value":"1_000"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberInteger","value":"1_000_000"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberInteger","value":"42"},
+ {"type":"Text","value":"\n"},
+ {"type":"LiteralNumberInteger","value":"0"},
+ {"type":"Text","value":"\n"},
+ {"type":"KeywordReserved","value":"const"},
+ {"type":"Text","value":" "},
+ {"type":"NameOther","value":"total"},
+ {"type":"Text","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"Text","value":" "},
+ {"type":"LiteralNumberHex","value":"0XFF"},
+ {"type":"Text","value":" "},
+ {"type":"Operator","value":"+"},
+ {"type":"Text","value":" "},
+ {"type":"LiteralNumberFloat","value":"1e-5"},
+ {"type":"Text","value":" "},
+ {"type":"Operator","value":"*"},
+ {"type":"Text","value":" "},
+ {"type":"LiteralNumberInteger","value":"1_000"},
+ {"type":"Punctuation","value":";"},
+ {"type":"Text","value":"\n"}
+]