@@ -331,3 +331,118 @@ let myRegex =
331
331
332
332
更多详情请参考[ PR] ( https://github.com/microsoft/TypeScript/pull/55600 ) 。
333
333
感谢 [ graphemecluster] ( https://github.com/graphemecluster/ ) 的贡献。
334
+
335
+ ## 支持新的 ECMAScript ` Set ` 方法
336
+
337
+ TypeScript 5.5 声明了新提议的 [ ECMAScript Set] ( https://github.com/tc39/proposal-set-methods ) 类型。
338
+
339
+ 其中一些方法,比如 ` union ` 、` intersection ` 、` difference ` 和 ` symmetricDifference ` ,接受另一个 ` Set ` 并返回一个新的 ` Set ` 作为结果。另一些方法,比如 ` isSubsetOf ` 、` isSupersetOf ` 和 ` isDisjointFrom ` ,接受另一个 ` Set ` 并返回一个布尔值。这些方法都不会改变原始的 ` Sets ` 。
340
+
341
+ 示例:
342
+
343
+ ``` ts
344
+ let fruits = new Set ([' apples' , ' bananas' , ' pears' , ' oranges' ]);
345
+ let applesAndBananas = new Set ([' apples' , ' bananas' ]);
346
+ let applesAndOranges = new Set ([' apples' , ' oranges' ]);
347
+ let oranges = new Set ([' oranges' ]);
348
+ let emptySet = new Set ();
349
+
350
+ // //
351
+ // union
352
+ // //
353
+
354
+ // Set(4) {'apples', 'bananas', 'pears', 'oranges'}
355
+ console .log (fruits .union (oranges ));
356
+
357
+ // Set(3) {'apples', 'bananas', 'oranges'}
358
+ console .log (applesAndBananas .union (oranges ));
359
+
360
+ // //
361
+ // intersection
362
+ // //
363
+
364
+ // Set(2) {'apples', 'bananas'}
365
+ console .log (fruits .intersection (applesAndBananas ));
366
+
367
+ // Set(0) {}
368
+ console .log (applesAndBananas .intersection (oranges ));
369
+
370
+ // Set(1) {'apples'}
371
+ console .log (applesAndBananas .intersection (applesAndOranges ));
372
+
373
+ // //
374
+ // difference
375
+ // //
376
+
377
+ // Set(3) {'apples', 'bananas', 'pears'}
378
+ console .log (fruits .difference (oranges ));
379
+
380
+ // Set(2) {'pears', 'oranges'}
381
+ console .log (fruits .difference (applesAndBananas ));
382
+
383
+ // Set(1) {'bananas'}
384
+ console .log (applesAndBananas .difference (applesAndOranges ));
385
+
386
+ // //
387
+ // symmetricDifference
388
+ // //
389
+
390
+ // Set(2) {'bananas', 'oranges'}
391
+ console .log (applesAndBananas .symmetricDifference (applesAndOranges )); // no apples
392
+
393
+ // //
394
+ // isDisjointFrom
395
+ // //
396
+
397
+ // true
398
+ console .log (applesAndBananas .isDisjointFrom (oranges ));
399
+
400
+ // false
401
+ console .log (applesAndBananas .isDisjointFrom (applesAndOranges ));
402
+
403
+ // true
404
+ console .log (fruits .isDisjointFrom (emptySet ));
405
+
406
+ // true
407
+ console .log (emptySet .isDisjointFrom (emptySet ));
408
+
409
+ // //
410
+ // isSubsetOf
411
+ // //
412
+
413
+ // true
414
+ console .log (applesAndBananas .isSubsetOf (fruits ));
415
+
416
+ // false
417
+ console .log (fruits .isSubsetOf (applesAndBananas ));
418
+
419
+ // false
420
+ console .log (applesAndBananas .isSubsetOf (oranges ));
421
+
422
+ // true
423
+ console .log (fruits .isSubsetOf (fruits ));
424
+
425
+ // true
426
+ console .log (emptySet .isSubsetOf (fruits ));
427
+
428
+ // //
429
+ // isSupersetOf
430
+ // //
431
+
432
+ // true
433
+ console .log (fruits .isSupersetOf (applesAndBananas ));
434
+
435
+ // false
436
+ console .log (applesAndBananas .isSupersetOf (fruits ));
437
+
438
+ // false
439
+ console .log (applesAndBananas .isSupersetOf (oranges ));
440
+
441
+ // true
442
+ console .log (fruits .isSupersetOf (fruits ));
443
+
444
+ // false
445
+ console .log (emptySet .isSupersetOf (fruits ));
446
+ ```
447
+
448
+ 感谢 [ Kevin Gibbons] ( https://github.com/bakkot ) 的贡献。
0 commit comments