Warning, /frameworks/syntax-highlighting/autotests/folding/test.ts.fold is written in an unsupported language. File is not indexed.
0001 /// <reference types="node" /> 0002 0003 // TypeScript Test 0004 0005 class Student <beginfold id='1'>{</beginfold id='1'> 0006 fullName: string; 0007 constructor(public firstName: string, public middleInitial: string, public lastName: string) <beginfold id='1'>{</beginfold id='1'> 0008 this.fullName = firstName + " " + middleInitial + " " + lastName; 0009 <endfold id='1'>}</endfold id='1'> 0010 <endfold id='1'>}</endfold id='1'> 0011 0012 interface Person <beginfold id='1'>{</beginfold id='1'> 0013 firstName: string; 0014 lastName: string; 0015 <endfold id='1'>}</endfold id='1'> 0016 0017 function greeter(person : Person) <beginfold id='1'>{</beginfold id='1'> 0018 return "Hello, " + person.firstName + " " + person.lastName; 0019 <endfold id='1'>}</endfold id='1'> 0020 0021 let user = new Student("Jane", "M.", "User"); 0022 0023 // Built-in 0024 document.body.innerHTML = greeter(user); to 0025 JSON.stringify() 0026 console.log("Hello world"); 0027 const os = require('os'); 0028 Math.LOG10E; 0029 Number.MAX_SAFE_INTEGER; 0030 String.raw<beginfold id='2'>`</beginfold id='2'>raw text \.\n${}<endfold id='2'>`</endfold id='2'> 0031 0032 import http = require<beginfold id='3'>(</beginfold id='3'>"http"<endfold id='3'>)</endfold id='3'>; 0033 import path = require<beginfold id='3'>(</beginfold id='3'>"path"<endfold id='3'>)</endfold id='3'>; 0034 import URL = url.URL; 0035 import <beginfold id='1'>{</beginfold id='1'> Readable, Writable <endfold id='1'>}</endfold id='1'> from "stream"; 0036 import <beginfold id='1'>{</beginfold id='1'> isBuffer, isString, isObject <endfold id='1'>}</endfold id='1'> from "util"; 0037 0038 const port = 8_88_8; 0039 const baseUrl = new URL(<beginfold id='4'>`</beginfold id='4'>http://localhost:${port}/<endfold id='4'>`</endfold id='4'>); 0040 const rootDir = path.dirname(__dirname); 0041 0042 const defaultBrowser = os.platform() === "win32" ? "edge" : "chrome"; 0043 let browser: "edge" | "chrome" | "none" = defaultBrowser; 0044 let grep: string | undefined; 0045 0046 interface FileBasedTestConfiguration <beginfold id='1'>{</beginfold id='1'> 0047 <beginfold id='5'>[</beginfold id='5'>setting: string<endfold id='5'>]</endfold id='5'>: string; 0048 <endfold id='1'>}</endfold id='1'> 0049 0050 function swapCase(s: string): string <beginfold id='1'>{</beginfold id='1'> 0051 return s.replace(/\w/g, (ch) => <beginfold id='1'>{</beginfold id='1'> 0052 const up = ch.toUpperCase(); 0053 return ch === up ? ch.toLowerCase() : up; 0054 <endfold id='1'>}</endfold id='1'>); 0055 <endfold id='1'>}</endfold id='1'> 0056 0057 for (var i in pieces) <beginfold id='1'>{</beginfold id='1'> 0058 switch (true) <beginfold id='1'>{</beginfold id='1'> 0059 case /^\"?Accession\"?/.test(pieces<beginfold id='5'>[</beginfold id='5'>i<endfold id='5'>]</endfold id='5'>): 0060 numeration<beginfold id='5'>[</beginfold id='5'>0<endfold id='5'>]</endfold id='5'> = i; 0061 break; 0062 <endfold id='1'>}</endfold id='1'> 0063 <endfold id='1'>}</endfold id='1'> 0064 0065 const enum ResponseCode <beginfold id='1'>{</beginfold id='1'> 0066 Success = 200, 0067 BadRequest = 400 0068 <endfold id='1'>}</endfold id='1'> 0069 0070 // Substitutions 0071 export function isInOpenInterval(start: number, end: number) <beginfold id='1'>{</beginfold id='1'> 0072 return tersible(a => a > start && a < end, () => <beginfold id='4'>`</beginfold id='4'>(${start}...${end})<endfold id='4'>`</endfold id='4'>) 0073 <endfold id='1'>}</endfold id='1'> 0074 const bar = <beginfold id='4'>`</beginfold id='4'>${x} ${y}<endfold id='4'>`</endfold id='4'>; 0075 0076 // readonly 0077 function f1(mt: <beginfold id='5'>[</beginfold id='5'>number, number<endfold id='5'>]</endfold id='5'>, rt: readonly <beginfold id='5'>[</beginfold id='5'>number, number<endfold id='5'>]</endfold id='5'>) <beginfold id='1'>{</beginfold id='1'> 0078 <endfold id='1'>}</endfold id='1'> 0079 0080 function f2(ma: string<beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>, ra: readonly string<beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>, mt: <beginfold id='5'>[</beginfold id='5'>string, string<endfold id='5'>]</endfold id='5'>, rt: readonly <beginfold id='5'>[</beginfold id='5'>string, string<endfold id='5'>]</endfold id='5'>) <beginfold id='1'>{</beginfold id='1'> 0081 <endfold id='1'>}</endfold id='1'> 0082 0083 type ReadWrite<T> = <beginfold id='1'>{</beginfold id='1'> -readonly <beginfold id='5'>[</beginfold id='5'>P in keyof T<endfold id='5'>]</endfold id='5'> : T<beginfold id='5'>[</beginfold id='5'>P<endfold id='5'>]</endfold id='5'> <endfold id='1'>}</endfold id='1'>; 0084 0085 // const assertion 0086 let obj = <beginfold id='1'>{</beginfold id='1'> x: 10, y: <beginfold id='5'>[</beginfold id='5'>20, 30<endfold id='5'>]</endfold id='5'>, z: <beginfold id='1'>{</beginfold id='1'> a: <beginfold id='1'>{</beginfold id='1'> b: 42 <endfold id='1'>}</endfold id='1'> <endfold id='1'>}</endfold id='1'> <endfold id='1'>}</endfold id='1'> as const; 0087 let r2 = <beginfold id='1'>{</beginfold id='1'> x: 20, y: 10 <endfold id='1'>}</endfold id='1'> as const; 0088 let r2 = <beginfold id='1'>{</beginfold id='1'>...p<endfold id='1'>}</endfold id='1'> as const; 0089 let p1 = <beginfold id='1'>{</beginfold id='1'> x: 10, y: 20 as const <endfold id='1'>}</endfold id='1'>; 0090 let p2 = <beginfold id='1'>{</beginfold id='1'> 10 as const, 'foo' as const <endfold id='1'>}</endfold id='1'>; 0091 0092 // Definite assignment operator 0093 class Cl <beginfold id='1'>{</beginfold id='1'> 0094 one?: string; 0095 two!: string; 0096 <endfold id='1'>}</endfold id='1'> 0097 let x! = 1; 0098 0099 // Function with multiple arguments 0100 const children = <beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>.map<Set<Map<number, string>>>(element => <beginfold id='1'>{</beginfold id='1'> 0101 if (!this.identityProvider) <beginfold id='1'>{</beginfold id='1'> 0102 return element; 0103 <endfold id='1'>}</endfold id='1'> 0104 return element; 0105 <endfold id='1'>}</endfold id='1'>); 0106 0107 // Numerics 0108 var a = 0xA; 0109 var b = 0b1; 0110 var c = 0o7; 0111 var d = 1.1E+3; 0112 var e = 1.E+3; 0113 var f = .1E+3; 0114 var g = 1E+3; 0115 var h = 1.1; 0116 var i = 1.; 0117 var j = .1; 0118 var k = 1; 0119 var l = 1_2.e+3_22 | .2e2 | 0o1_23 | 11.2 | 08; 0120 0121 // Bigint 0122 const binBig = 0b101n; 0123 const octBig = 0o567n; 0124 const hexBig = 0xC0Bn; 0125 const decBig = 123n; 0126 0127 // Invalid numbers 0128 var l = 0xA1t; 0129 var m = 0b0123; 0130 var n = 0o29; 0131 var n = 0_7; 0132 var n = 1___1; 0133 var n = 1__; 0134 var n = 11__.; 0135 var n = 1__.e+3_22; 0136 var n = .2_e2; 0137 0138 // Types 0139 let a: null = null; 0140 let b: number = 123; 0141 let c: number = 123.456; 0142 let d: string = <beginfold id='4'>`</beginfold id='4'>Geeks<endfold id='4'>`</endfold id='4'>; 0143 let e: undefined = undefined; 0144 let f: boolean = true; 0145 let g: number = 0b111001; // Binary 0146 let h: number = 0o436; // Octal 0147 let i: number = 0xadf0d; // Hexa-Decimal 0148 let j: bigint = 123n; 0149 0150 const query = query<<beginfold id='5'>[</beginfold id='5'>number<endfold id='5'>]</endfold id='5'>, number>(<beginfold id='4'>`</beginfold id='4'> 0151 SELECT * 0152 FROM statistics 0153 WHERE unit_id = $1<endfold id='4'>`</endfold id='4'>) 0154 0155 function runQuery() <beginfold id='1'>{</beginfold id='1'> 0156 const query = createQuery<<beginfold id='5'>[</beginfold id='5'>number<beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'><endfold id='5'>]</endfold id='5'>, Table<Columns>>(<beginfold id='4'>`</beginfold id='4'> 0157 some SQL here 0158 <endfold id='4'>`</endfold id='4'>) 0159 return database.execute(query) 0160 <endfold id='1'>}</endfold id='1'> 0161 0162 aa: <sdf/> string ?<ssd/> string 0163 string // Don't highlight 0164 aa: string assa | 0165 string 0166 string ; 0167 string 0168 0169 aa: <beginfold id='1'>{</beginfold id='1'> string 0170 string <endfold id='1'>}</endfold id='1'> // Don't highlight 0171 0172 aa: <beginfold id='5'>[</beginfold id='5'> string 0173 string <endfold id='5'>]</endfold id='5'> 0174 aa: ( string 0175 string ) // Don't highlight 0176 aa: string <string> 0177 interface a <beginfold id='1'>{</beginfold id='1'> 0178 aa: <beginfold id='6'>/*</beginfold id='6'> comment 0179 <endfold id='6'>*/</endfold id='6'> string, 0180 bb: <beginfold id='6'>/*</beginfold id='6'> comment <endfold id='6'>*/</endfold id='6'> 0181 number, 0182 cc: // comment 0183 void, 0184 dd: 0185 any, 0186 <endfold id='1'>}</endfold id='1'> 0187 0188 null, <<beginfold id='1'>{</beginfold id='1'><beginfold id='5'>[</beginfold id='5'>key<endfold id='5'>]</endfold id='5'>: () => any<endfold id='1'>}</endfold id='1'>> null 0189 null, <<beginfold id='1'>{</beginfold id='1'><beginfold id='5'>[</beginfold id='5'>key<endfold id='5'>]</endfold id='5'>: () =><beginfold id='1'>{</beginfold id='1'>a: number<endfold id='1'>}</endfold id='1'><endfold id='1'>}</endfold id='1'>> null 0190 0191 // Correctly highlighting regular expressions 0192 dt = ((dt<beginfold id='5'>[</beginfold id='5'>0<endfold id='5'>]</endfold id='5'> * 1e9 + dt<beginfold id='5'>[</beginfold id='5'>1<endfold id='5'>]</endfold id='5'>) / 1e6).toFixed(3).replace(/\.?0+$/, '') + 'ms'; 0193 (a<beginfold id='5'>[</beginfold id='5'>0<endfold id='5'>]</endfold id='5'> / 2) / (2) 0194 0195 // Type guards 0196 function isNumber(x: any): x is number <beginfold id='1'>{</beginfold id='1'> 0197 return typeof x === "number"; 0198 <endfold id='1'>}</endfold id='1'> 0199 0200 // Conditional expressions (highlight keywords before ":") 0201 class C <beginfold id='1'>{</beginfold id='1'> 0202 w = () => 0203 this.a() ? true : this.b() ? false : true; 0204 z = () => 0205 this.b() ? hello : k; 0206 <endfold id='1'>}</endfold id='1'> 0207 0208 function foo<T extends X>(arg: T): T extends B ? number : string <beginfold id='1'>{</beginfold id='1'> 0209 if (arg === "A") return <T extends B ? number : never>111; 0210 return <T extends B ? never : string>"returning a string"; 0211 <endfold id='1'>}</endfold id='1'> 0212 0213 let x = (foo === null || foo === undefined) ? 0214 undefined : 0215 foo.bar.baz(); 0216 let y = (foo === null || foo === undefined) ? <beginfold id='6'>/*</beginfold id='6'> comment <endfold id='6'>*/</endfold id='6'> undefined : 0217 foo.bar.baz(); 0218 0219 // Operator ?? 0220 let x = foo ?? bar(); 0221 0222 // Types and logical `&&` and `||` operators after `as` expression 0223 Date as any || null; 0224 0225 //Assertions 0226 const assert: (value: unknown) => asserts value = value => <beginfold id='1'>{</beginfold id='1'><endfold id='1'>}</endfold id='1'> 0227 declare function assertIsString(value: unknown): asserts value is string; 0228 declare function assertIsArrayOfStrings(value: unknown): asserts value is string<beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>; 0229 declare function assertDefined<T>(value: T): asserts value is NonNullable<T>; 0230 namespace Debug <beginfold id='1'>{</beginfold id='1'> 0231 export declare function assert(value: unknown, message?: string): asserts value; 0232 export declare function assertDefined<T>(value: T): asserts value is NonNullable<T>; 0233 <endfold id='1'>}</endfold id='1'> 0234 0235 // Only highlight valid regular expressions, of a single line, after strings 0236 // See: https://github.com/microsoft/TypeScript-TmLanguage/issues/786 0237 "text" /No-Regex 0238 "text" /Regex[:)]*/; 0239 const a = "6" / 2; <beginfold id='6'>/*</beginfold id='6'>comment<endfold id='6'>*/</endfold id='6'> const b = 5; 0240 console.log("4" / "2"); // 2 0241 // Single quote 0242 const a = '6' / 2; <beginfold id='6'>/*</beginfold id='6'>comment<endfold id='6'>*/</endfold id='6'> const b = 5; 0243 console.log('4' / '2'); // 2 0244 // Template 0245 const a = <beginfold id='4'>`</beginfold id='4'>6<endfold id='4'>`</endfold id='4'> / 2; <beginfold id='6'>/*</beginfold id='6'>comment<endfold id='6'>*/</endfold id='6'> const b = 5; 0246 console.log(<beginfold id='4'>`</beginfold id='4'>4<endfold id='4'>`</endfold id='4'> / <beginfold id='4'>`</beginfold id='4'>2<endfold id='4'>`</endfold id='4'>); // 2 0247 0248 <beginfold id='5'>[</beginfold id='5'>1, 2, 3<endfold id='5'>]</endfold id='5'>.reduce<readonly number<beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>>((previous) => previous, <beginfold id='5'>[</beginfold id='5'><endfold id='5'>]</endfold id='5'>); 0249 0250 // Multiline arrow assignment 0251 const h = <beginfold id='1'>{</beginfold id='1'> 0252 setSubProperty: < 0253 T extends A, 0254 K extends keyof T, 0255 J extends keyof T<beginfold id='5'>[</beginfold id='5'>K<endfold id='5'>]</endfold id='5'> 0256 >( 0257 property: K, 0258 key: J, 0259 value: T<beginfold id='5'>[</beginfold id='5'>K<endfold id='5'>]</endfold id='5'><beginfold id='5'>[</beginfold id='5'>J<endfold id='5'>]</endfold id='5'> 0260 ) => <beginfold id='1'>{</beginfold id='1'><endfold id='1'>}</endfold id='1'> 0261 <endfold id='1'>}</endfold id='1'> 0262 0263 // Private-Named Instance Fields 0264 class Greeter <beginfold id='1'>{</beginfold id='1'> 0265 #name: string; 0266 constructor(name: string) <beginfold id='1'>{</beginfold id='1'> 0267 this.#name = name; 0268 <endfold id='1'>}</endfold id='1'> 0269 greet() <beginfold id='1'>{</beginfold id='1'> 0270 console.log(<beginfold id='4'>`</beginfold id='4'>hello ${this.#name}<endfold id='4'>`</endfold id='4'>); 0271 <endfold id='1'>}</endfold id='1'> 0272 <endfold id='1'>}</endfold id='1'> 0273 class Test <beginfold id='1'>{</beginfold id='1'> 0274 #NAME1: () => string; 0275 prop1 = x.#NAMEabc.#NAMEabc; 0276 prop2 = x.#NAMEabc.#NAMEabc(); 0277 prop3 = this.#NAMEabc.#NAME(); 0278 <endfold id='1'>}</endfold id='1'> 0279 0280 // Type-only imports and exports 0281 import type T from "mod"; 0282 import type <beginfold id='1'>{</beginfold id='1'> U, V <endfold id='1'>}</endfold id='1'> from "mod"; 0283 import type * as types from "mod"; 0284 import type from "mod"; 0285 import type = require<beginfold id='3'>(</beginfold id='3'>"mod"<endfold id='3'>)</endfold id='3'>; 0286 import type T = require<beginfold id='3'>(</beginfold id='3'>"mod"<endfold id='3'>)</endfold id='3'>; 0287 0288 export <beginfold id='1'>{</beginfold id='1'> a as b, x <endfold id='1'>}</endfold id='1'>; 0289 export * from "AnotherModule"; 0290 export <beginfold id='1'>{</beginfold id='1'> k as m, l <endfold id='1'>}</endfold id='1'> from "AnotherModule"; 0291 export type <beginfold id='1'>{</beginfold id='1'> T <endfold id='1'>}</endfold id='1'>; 0292 export type <beginfold id='1'>{</beginfold id='1'> U <endfold id='1'>}</endfold id='1'> from "AnotherModule"; 0293 0294 // 'awaited' type operator: https://github.com/microsoft/TypeScript/pull/35998 0295 let v1: awaited number; 0296 let v2: awaited Promise<number>; 0297 function f7<U>() <beginfold id='1'>{</beginfold id='1'> 0298 let v0: awaited U; 0299 let v1: awaited Promise<U>; 0300 <endfold id='1'>}</endfold id='1'> 0301 0302 // Tagged template literals 0303 tagFunc<beginfold id='4'>`</beginfold id='4'> 0304 Hello world! 0305 ${ alert("Hello!"); }<endfold id='4'>`</endfold id='4'>; 0306 obj.something.tagFunc<beginfold id='4'>`</beginfold id='4'>Setting ${setting} is ${value + 5}!<endfold id='4'>`</endfold id='4'>;