Skip to content

Commit dbc7a3e

Browse files
committed
支持新的 ECMAScript Set 方法
5.5
1 parent e9ec1f7 commit dbc7a3e

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed

zh/release-notes/typescript-5.5.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,3 +331,118 @@ let myRegex =
331331

332332
更多详情请参考[PR](https://github.com/microsoft/TypeScript/pull/55600)
333333
感谢 [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

Comments
 (0)