|
204 | 204 | <span style="font-weight:bold;">return</span> <T <span style="font-weight:bold;font-style:italic;">extends</span> B ? <span style="color:#0057ae;">never</span> : <span style="color:#0057ae;">string</span>><span style="color:#bf0303;">"returning a string"</span>;
|
205 | 205 | }
|
206 | 206 |
|
| 207 | +<span style="font-weight:bold;font-style:italic;">let</span> x = (foo === <span style="font-weight:bold;">null</span> || foo === <span style="font-weight:bold;">undefined</span>) ? |
| 208 | + <span style="font-weight:bold;">undefined</span> : |
| 209 | + foo.<span style="color:#0057ae;">bar</span>.<span style="color:#644a9b;">baz</span>(); |
| 210 | +<span style="font-weight:bold;font-style:italic;">let</span> y = (foo === <span style="font-weight:bold;">null</span> || foo === <span style="font-weight:bold;">undefined</span>) ? <span style="color:#898887;">/* comment */</span> <span style="font-weight:bold;">undefined</span> : |
| 211 | + foo.<span style="color:#0057ae;">bar</span>.<span style="color:#644a9b;">baz</span>(); |
| 212 | + |
| 213 | +<span style="color:#898887;">// Operator ??</span> |
| 214 | +<span style="font-weight:bold;font-style:italic;">let</span> x = foo ?? <span style="color:#644a9b;">bar</span>(); |
| 215 | + |
207 | 216 | <span style="color:#898887;">// Types and logical `&&` and `||` operators after `as` expression</span>
|
208 | 217 | <span style="color:#644a9b;font-weight:bold;">Date</span> <span style="color:#ff5500;">as</span> <span style="color:#0057ae;">any</span> || <span style="color:#0057ae;">null</span>;
|
209 | 218 |
|
210 | 219 | <span style="color:#898887;">//Assertions</span>
|
211 | 220 | <span style="font-weight:bold;">const</span> assert: (value: <span style="color:#0057ae;">unknown</span>) <span style="font-weight:bold;">=></span> <span style="font-weight:bold;">asserts</span> value = value <span style="font-weight:bold;">=></span> {}
|
212 |
| -<span style="font-weight:bold;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertIsString</span>(value: <span style="color:#0057ae;">unknown</span>): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#0057ae;">string</span>; |
213 |
| -<span style="font-weight:bold;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertIsArrayOfStrings</span>(value: <span style="color:#0057ae;">unknown</span>): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#0057ae;">string</span>[]; |
214 |
| -<span style="font-weight:bold;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertDefined</span><T>(value: T): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#644a9b;font-weight:bold;">NonNullable</span><T>; |
| 221 | +<span style="font-weight:bold;font-style:italic;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertIsString</span>(value: <span style="color:#0057ae;">unknown</span>): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#0057ae;">string</span>; |
| 222 | +<span style="font-weight:bold;font-style:italic;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertIsArrayOfStrings</span>(value: <span style="color:#0057ae;">unknown</span>): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#0057ae;">string</span>[]; |
| 223 | +<span style="font-weight:bold;font-style:italic;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertDefined</span><T>(value: T): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#644a9b;font-weight:bold;">NonNullable</span><T>; |
215 | 224 | <span style="color:#ff5500;">namespace</span> <span style="color:#0057ae;">Debug</span> {
|
216 |
| - <span style="color:#ff5500;">export</span> <span style="font-weight:bold;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assert</span>(value: <span style="color:#0057ae;">unknown</span>, message?: <span style="color:#0057ae;">string</span>): <span style="font-weight:bold;">asserts</span> value; |
217 |
| - <span style="color:#ff5500;">export</span> <span style="font-weight:bold;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertDefined</span><T>(value: T): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#644a9b;font-weight:bold;">NonNullable</span><T>; |
| 225 | + <span style="color:#ff5500;">export</span> <span style="font-weight:bold;font-style:italic;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assert</span>(value: <span style="color:#0057ae;">unknown</span>, message?: <span style="color:#0057ae;">string</span>): <span style="font-weight:bold;">asserts</span> value; |
| 226 | + <span style="color:#ff5500;">export</span> <span style="font-weight:bold;font-style:italic;">declare</span> <span style="font-weight:bold;">function</span> <span style="color:#644a9b;">assertDefined</span><T>(value: T): <span style="font-weight:bold;">asserts</span> value <span style="font-weight:bold;">is</span> <span style="color:#644a9b;font-weight:bold;">NonNullable</span><T>; |
218 | 227 | }
|
219 | 228 |
|
220 | 229 | <span style="color:#898887;">// Only highlight valid regular expressions, of a single line, after strings</span>
|
|
229 | 238 | <span style="color:#898887;">// Template</span>
|
230 | 239 | <span style="font-weight:bold;">const</span> a = <span style="color:#bf0303;">`6`</span> / <span style="color:#b08000;">2</span>; <span style="color:#898887;">/*comment*/</span> <span style="font-weight:bold;">const</span> b = <span style="color:#b08000;">5</span>;
|
231 | 240 | <span style="color:#644a9b;font-weight:bold;">console</span>.<span style="color:#644a9b;font-style:italic;">log</span>(<span style="color:#bf0303;">`4`</span> / <span style="color:#bf0303;">`2`</span>); <span style="color:#898887;">// 2</span>
|
| 241 | + |
| 242 | + [<span style="color:#b08000;">1</span>, <span style="color:#b08000;">2</span>, <span style="color:#b08000;">3</span>].<span style="color:#644a9b;">reduce</span><<span style="font-weight:bold;font-style:italic;">readonly</span> <span style="color:#0057ae;">number</span>[]>((previous) <span style="font-weight:bold;">=></span> previous, []); |
| 243 | + |
| 244 | +<span style="color:#898887;">// Multiline arrow assignment</span> |
| 245 | +<span style="font-weight:bold;">const</span> h = { |
| 246 | + setSubProperty: < |
| 247 | + T <span style="font-weight:bold;font-style:italic;">extends</span> A, |
| 248 | + K <span style="font-weight:bold;font-style:italic;">extends</span> <span style="font-weight:bold;">keyof</span> T, |
| 249 | + J <span style="font-weight:bold;font-style:italic;">extends</span> <span style="font-weight:bold;">keyof</span> T[K] |
| 250 | + >( |
| 251 | + property: K, |
| 252 | + key: J, |
| 253 | + value: T[K][J] |
| 254 | + ) <span style="font-weight:bold;">=></span> {} |
| 255 | +} |
| 256 | + |
| 257 | +<span style="color:#898887;">// Private-Named Instance Fields</span> |
| 258 | +<span style="font-weight:bold;font-style:italic;">class</span> Greeter { |
| 259 | + #name: <span style="color:#0057ae;">string</span>; |
| 260 | + <span style="font-weight:bold;font-style:italic;">constructor</span>(name: <span style="color:#0057ae;">string</span>) { |
| 261 | + <span style="font-weight:bold;">this</span>.#<span style="color:#0057ae;">name</span> = name; |
| 262 | + } |
| 263 | + <span style="color:#644a9b;">greet</span>() { |
| 264 | + <span style="color:#644a9b;font-weight:bold;">console</span>.<span style="color:#644a9b;font-style:italic;">log</span>(<span style="color:#bf0303;">`hello </span><span style="color:#3daee9;">${</span><span style="font-weight:bold;">this</span>.#<span style="color:#0057ae;">name</span><span style="color:#3daee9;">}</span><span style="color:#bf0303;">`</span>); |
| 265 | + } |
| 266 | +} |
| 267 | +<span style="font-weight:bold;font-style:italic;">class</span> Test { |
| 268 | + #NAME1: () <span style="font-weight:bold;">=></span> <span style="color:#0057ae;">string</span>; |
| 269 | + prop1 = x.#<span style="color:#0057ae;">NAMEabc</span>.#<span style="color:#0057ae;">NAMEabc</span>; |
| 270 | + prop2 = x.#<span style="color:#0057ae;">NAMEabc</span>.#<span style="color:#644a9b;">NAMEabc</span>(); |
| 271 | + prop3 = <span style="font-weight:bold;">this</span>.#<span style="color:#0057ae;">NAMEabc</span>.#<span style="color:#644a9b;">NAME</span>(); |
| 272 | +} |
| 273 | + |
| 274 | +<span style="color:#898887;">// Type-only imports and exports</span> |
| 275 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> T <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"mod"</span>; |
| 276 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> { U, V } <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"mod"</span>; |
| 277 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> * <span style="color:#ff5500;">as</span> types <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"mod"</span>; |
| 278 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"mod"</span>; |
| 279 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> =<span style="font-weight:bold;"> require</span>(<span style="color:#bf0303;">"mod"</span>); |
| 280 | +<span style="color:#ff5500;">import</span> <span style="color:#ff5500;">type</span> T =<span style="font-weight:bold;"> require</span>(<span style="color:#bf0303;">"mod"</span>); |
| 281 | + |
| 282 | +<span style="color:#ff5500;">export</span> { a <span style="color:#ff5500;">as</span> b, x }; |
| 283 | +<span style="color:#ff5500;">export</span> * <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"AnotherModule"</span>; |
| 284 | +<span style="color:#ff5500;">export</span> { k <span style="color:#ff5500;">as</span> m, l } <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"AnotherModule"</span>; |
| 285 | +<span style="color:#ff5500;">export type</span> { T }; |
| 286 | +<span style="color:#ff5500;">export type</span> { U } <span style="color:#ff5500;">from</span> <span style="color:#bf0303;">"AnotherModule"</span>; |
232 | 287 | </pre></body></html>
|
0 commit comments