semantic-typescript 0.2.6 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/readme.jp.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Semantic-TypeScript ストリーム処理ライブラリ
2
2
 
3
- ## 概要
3
+ ## 序論
4
4
 
5
- Semantic-TypeScriptは、JavaScript GeneratorFunction、Java Stream、MySQL Indexにインスパイアされたモダンなストリーム処理ライブラリです。このライブラリのコア設計は、データインデックスに基づいた効率的なデータ処理パイプラインの構築にあり、型安全で関数型スタイルのストリーム操作体験をフロントエンド開発者に提供します。
5
+ Semantic-TypeScriptは、JavaScriptGeneratorFunction、JavaStream、MySQLIndexに触発された現代的なストリーム処理ライブラリです。その中心的な設計哲学は、データインデックスを使用して効率的なデータ処理パイプラインを構築することに基づいており、フロントエンド開発のための型安全で関数型のストリーミング操作体験を提供します。
6
6
 
7
- 従来の同期処理とは異なり、Semanticは非同期処理モードを採用しています。データストリームを作成する際、端末がデータを受信するタイミングは、アップストリームが`accept`および`interrupt`コールバック関数をいつ呼び出すかに完全に依存します。この設計により、ライブラリはリアルタイムデータストリーム、大規模データセット、非同期データソースを優雅に処理できます。
7
+ 従来の同期処理とは異なり、Semanticは非同期処理モデルを採用しています。データストリームを作成する際、ターミナルがデータを受信するタイミングは、アップストリームが`accept`と`interrupt`コールバック関数を呼び出すタイミングに完全に依存します。この設計により、ライブラリはリアルタイムデータストリーム、大規模なデータセット、非同期データソースを洗練された方法で処理することができます。
8
8
 
9
9
  ## インストール
10
10
 
@@ -12,310 +12,323 @@ Semantic-TypeScriptは、JavaScript GeneratorFunction、Java Stream、MySQL Inde
12
12
  npm install semantic-typescript
13
13
  ```
14
14
 
15
- ## 基本型
15
+ ## 基本的な型
16
16
 
17
17
  | 型 | 説明 |
18
18
  |------|-------------|
19
- | `Invalid<T>` | `null` または `undefined` を拡張する型 |
20
- | `Valid<T>` | `null` および `undefined` を除外する型 |
21
- | `MaybeInvalid<T>` | `null` または `undefined` になり得る型 |
19
+ | `Invalid<T>` | `null`または`undefined`から派生した型 |
20
+ | `Valid<T>` | `null`と`undefined`を除外した型 |
21
+ | `MaybeInvalid<T>` | `null`または`undefined`である可能性がある型 |
22
22
  | `Primitive` | プリミティブ型の集合 |
23
- | `MaybePrimitive<T>` | プリミティブ型になり得る型 |
24
- | `OptionalSymbol` | `Optional` クラスのシンボル識別子 |
25
- | `SemanticSymbol` | `Semantic` クラスのシンボル識別子 |
26
- | `CollectorsSymbol` | `Collector` クラスのシンボル識別子 |
27
- | `CollectableSymbol` | `Collectable` クラスのシンボル識別子 |
28
- | `OrderedCollectableSymbol` | `OrderedCollectable` クラスのシンボル識別子 |
29
- | `WindowCollectableSymbol` | `WindowCollectable` クラスのシンボル識別子 |
30
- | `StatisticsSymbol` | `Statistics` クラスのシンボル識別子 |
31
- | `NumericStatisticsSymbol` | `NumericStatistics` クラスのシンボル識別子 |
32
- | `BigIntStatisticsSymbol` | `BigIntStatistics` クラスのシンボル識別子 |
33
- | `UnorderedCollectableSymbol` | `UnorderedCollectable` クラスのシンボル識別子 |
34
-
35
- ## 関数型インターフェース
23
+ | `MaybePrimitive<T>` | プリミティブ型である可能性がある型 |
24
+ | `OptionalSymbol` | `Optional`クラスのシンボル識別子 |
25
+ | `SemanticSymbol` | `Semantic`クラスのシンボル識別子 |
26
+ | `CollectorsSymbol` | `Collector`クラスのシンボル識別子 |
27
+ | `CollectableSymbol` | `Collectable`クラスのシンボル識別子 |
28
+ | `OrderedCollectableSymbol` | `OrderedCollectable`クラスのシンボル識別子 |
29
+ | `WindowCollectableSymbol` | `WindowCollectable`クラスのシンボル識別子 |
30
+ | `StatisticsSymbol` | `Statistics`クラスのシンボル識別子 |
31
+ | `NumericStatisticsSymbol` | `NumericStatistics`クラスのシンボル識別子 |
32
+ | `BigIntStatisticsSymbol` | `BigIntStatistics`クラスのシンボル識別子 |
33
+ | `UnorderedCollectableSymbol` | `UnorderedCollectable`クラスのシンボル識別子 |
34
+
35
+ ## 関数指向のインターフェース
36
36
 
37
37
  | インターフェース | 説明 |
38
- |------------------|-------------|
39
- | `Runnable` | 引数も戻り値も持たない関数 |
40
- | `Supplier<R>` | 引数なしで `R` を返す関数 |
41
- | `Functional<T, R>` | 単一引数の変換関数 |
42
- | `BiFunctional<T, U, R>` | 二引数の変換関数 |
43
- | `TriFunctional<T, U, V, R>` | 三引数の変換関数 |
44
- | `Predicate<T>` | 単一引数の述語関数 |
45
- | `BiPredicate<T, U>` | 二引数の述語関数 |
46
- | `TriPredicate<T, U, V>` | 三引数の述語関数 |
47
- | `Consumer<T>` | 単一引数の消費関数 |
48
- | `BiConsumer<T, U>` | 二引数の消費関数 |
49
- | `TriConsumer<T, U, V>` | 三引数の消費関数 |
50
- | `Comparator<T>` | 二引数の比較関数 |
51
- | `Generator<T>` | ジェネレーター関数(コアおよび基盤) |
38
+ |-----------|-------------|
39
+ | `Runnable` | パラメータがなく戻り値もない関数 |
40
+ | `Supplier<R>` | パラメータがなく`R`を返す関数 |
41
+ | `Functional<T, R>` | 単一パラメータの変換関数 |
42
+ | `BiFunctional<T, U, R>` | 二つのパラメータの変換関数 |
43
+ | `TriFunctional<T, U, V, R>` | 三つのパラメータの変換関数 |
44
+ | `Predicate<T>` | 単一パラメータの述語関数 |
45
+ | `BiPredicate<T, U>` | 二つのパラメータの述語関数 |
46
+ | `TriPredicate<T, U, V>` | 三つのパラメータの述語関数 |
47
+ | `Consumer<T>` | 単一パラメータのコンシューマ関数 |
48
+ | `BiConsumer<T, U>` | 二つのパラメータのコンシューマ関数 |
49
+ | `TriConsumer<T, U, V>` | 三つのパラメータのコンシューマ関数 |
50
+ | `Comparator<T>` | 二つのパラメータの比較関数 |
51
+ | `Generator<T>` | ジェネレータ関数(コアと基盤) |
52
52
 
53
53
  ```typescript
54
- // 型使用例
55
- const predicate: Predicate<number> = (n) => n > 0;
56
- const mapper: Functional<string, number> = (str) => str.length;
57
- const comparator: Comparator<number> = (a, b) => a - b;
54
+ // 型の使用例
55
+ let predicate: Predicate<number> = (n: number): boolean => n > 0;
56
+ let mapper: Functional<string, number> = (text: string): number => text.length;
57
+ let comparator: Comparator<number> = (a: number, b: number): number => a - b;
58
58
  ```
59
59
 
60
60
  ## 型ガード
61
61
 
62
- | 関数 | 説明 | 時間計算量 | 空間計算量 |
62
+ | 関数 | 説明 | 時間複雑度 | 空間複雑度 |
63
63
  |------|------|------------|------------|
64
- | `validate<T>(t: MaybeInvalid<T>): t is T` | 値がnullまたはundefinedでないことを検証 | O(1) | O(1) |
65
- | `invalidate<T>(t: MaybeInvalid<T>): t is null \| undefined` | 値がnullまたはundefinedであることを検証 | O(1) | O(1) |
66
- | `isBoolean(t: unknown): t is boolean` | ブーリアンかどうかチェック | O(1) | O(1) |
67
- | `isString(t: unknown): t is string` | 文字列かどうかチェック | O(1) | O(1) |
68
- | `isNumber(t: unknown): t is number` | 数値かどうかチェック | O(1) | O(1) |
69
- | `isFunction(t: unknown): t is Function` | 関数かどうかチェック | O(1) | O(1) |
70
- | `isObject(t: unknown): t is object` | オブジェクトかどうかチェック | O(1) | O(1) |
71
- | `isSymbol(t: unknown): t is symbol` | シンボルかどうかチェック | O(1) | O(1) |
72
- | `isBigint(t: unknown): t is bigint` | BigIntかどうかチェック | O(1) | O(1) |
73
- | `isPrimitive(t: unknown): t is Primitive` | プリミティブ型かどうかチェック | O(1) | O(1) |
74
- | `isIterable(t: unknown): t is Iterable<unknown>` | 反復可能かどうかチェック | O(1) | O(1) |
75
- | `isOptional(t: unknown): t is Optional<unknown>` | Optionalインスタンスかどうかチェック | O(1) | O(1) |
76
- | `isSemantic(t: unknown): t is Semantic<unknown>` | Semanticインスタンスかどうかチェック | O(1) | O(1) |
77
- | `isCollector(t: unknown): t is Collector<unknown, unknown, unknown>` | Collectorインスタンスかどうかチェック | O(1) | O(1) |
78
- | `isCollectable(t: unknown): t is Collectable<unknown>` | Collectableインスタンスかどうかチェック | O(1) | O(1) |
79
- | `isOrderedCollectable(t: unknown): t is OrderedCollectable<unknown>` | OrderedCollectableインスタンスかどうかチェック | O(1) | O(1) |
80
- | `isWindowCollectable(t: unknown): t is WindowCollectable<unknown>` | WindowCollectableインスタンスかどうかチェック | O(1) | O(1) |
81
- | `isUnorderedCollectable(t: unknown): t is UnorderedCollectable<unknown>` | UnorderedCollectableインスタンスかどうかチェック | O(1) | O(1) |
82
- | `isStatistics(t: unknown): t is Statistics<unknown, number \| bigint>` | Statisticsインスタンスかどうかチェック | O(1) | O(1) |
83
- | `isNumericStatistics(t: unknown): t is NumericStatistics<unknown>` | NumericStatisticsインスタンスかどうかチェック | O(1) | O(1) |
84
- | `isBigIntStatistics(t: unknown): t is BigIntStatistics<unknown>` | BigIntStatisticsインスタンスかどうかチェック | O(1) | O(1) |
64
+ | `validate<T>(t: MaybeInvalid<T>): t is T` | 値がnullまたはundefinedではないかを検証 | O(1) | O(1) |
65
+ | `invalidate<T>(t: MaybeInvalid<T>): t is null \| undefined` | 値がnullまたはundefinedかを検証 | O(1) | O(1) |
66
+ | `isBoolean(t: unknown): t is boolean` | 値がbooleanかをチェック | O(1) | O(1) |
67
+ | `isString(t: unknown): t is string` | 値が文字列かをチェック | O(1) | O(1) |
68
+ | `isNumber(t: unknown): t is number` | 値が数値かをチェック | O(1) | O(1) |
69
+ | `isFunction(t: unknown): t is Function` | 値が関数かをチェック | O(1) | O(1) |
70
+ | `isObject(t: unknown): t is object` | 値がオブジェクトかをチェック | O(1) | O(1) |
71
+ | `isSymbol(t: unknown): t is symbol` | 値がシンボルかをチェック | O(1) | O(1) |
72
+ | `isBigint(t: unknown): t is bigint` | 値がBigIntかをチェック | O(1) | O(1) |
73
+ | `isPrimitive(t: unknown): t is Primitive` | 値がプリミティブ型かをチェック | O(1) | O(1) |
74
+ | `isIterable(t: unknown): t is Iterable<unknown>` | 値が反復可能オブジェクトかをチェック | O(1) | O(1) |
75
+ | `isOptional(t: unknown): t is Optional<unknown>` | 値がOptionalインスタンスかをチェック | O(1) | O(1) |
76
+ | `isSemantic(t: unknown): t is Semantic<unknown>` | 値がSemanticインスタンスかをチェック | O(1) | O(1) |
77
+ | `isCollector(t: unknown): t is Collector<unknown, unknown, unknown>` | 値がCollectorインスタンスかをチェック | O(1) | O(1) |
78
+ | `isCollectable(t: unknown): t is Collectable<unknown>` | 値がCollectableインスタンスかをチェック | O(1) | O(1) |
79
+ | `isOrderedCollectable(t: unknown): t is OrderedCollectable<unknown>` | 値がOrderedCollectableインスタンスかをチェック | O(1) | O(1) |
80
+ | `isWindowCollectable(t: unknown): t is WindowCollectable<unknown>` | 値がWindowCollectableインスタンスかをチェック | O(1) | O(1) |
81
+ | `isUnorderedCollectable(t: unknown): t is UnorderedCollectable<unknown>` | 値がUnorderedCollectableインスタンスかをチェック | O(1) | O(1) |
82
+ | `isStatistics(t: unknown): t is Statistics<unknown, number \| bigint>` | 値がStatisticsインスタンスかをチェック | O(1) | O(1) |
83
+ | `isNumericStatistics(t: unknown): t is NumericStatistics<unknown>` | 値がNumericStatisticsインスタンスかをチェック | O(1) | O(1) |
84
+ | `isBigIntStatistics(t: unknown): t is BigIntStatistics<unknown>` | 値がBigIntStatisticsインスタンスかをチェック | O(1) | O(1) |
85
+ | `isPromise(t: unknown): t is Promise<unknown>` | 値がPromiseオブジェクトかをチェック | O(1) | O(1) |
86
+ | `isAsync(t: unknown): t is AsyncFunction` | 値がAsyncFunctionかをチェック | O(1) | O(1) |
85
87
 
86
88
  ```typescript
87
- // 型ガード使用例
88
- const value: unknown = "hello";
89
+ // 型ガードの使用例
90
+ let value: unknown = "hello";
89
91
 
90
92
  if (isString(value)) {
91
- console.log(value.length); // 型安全、valueはstringと推論
93
+ console.log(value.length); // 型安全、valueはstringと推論される
92
94
  }
93
95
 
94
96
  if (isOptional(someValue)) {
95
- someValue.ifPresent(val => console.log(val));
97
+ someValue.ifPresent((value): void => console.log(val));
98
+ }
99
+
100
+ if(isIterable(value)){
101
+ // 型安全、今やそれは反復可能なオブジェクトです。
102
+ for(let item of value){
103
+ console.log(item);
104
+ }
96
105
  }
97
106
  ```
98
107
 
99
108
  ## ユーティリティ関数
100
109
 
101
- | 関数 | 説明 | 時間計算量 | 空間計算量 |
110
+ | 関数 | 説明 | 時間複雑度 | 空間複雑度 |
102
111
  |------|------|------------|------------|
103
- | `useCompare<T>(t1: T, t2: T): number` | 汎用比較関数 | O(1) | O(1) |
104
- | `useRandom<T = number \| bigint>(index: T): T` | 擬似乱数生成器 | O(log n) | O(1) |
112
+ | `useCompare<T>(t1: T, t2: T): number` | 一般的な比較関数 | O(1) | O(1) |
113
+ | `useRandom<T = number \| bigint>(index: T): T` | 疑似乱数生成器 | O(log n) | O(1) |
105
114
 
106
115
  ```typescript
107
- // ユーティリティ関数使用例
108
- const numbers = [3, 1, 4, 1, 5];
116
+ // ユーティリティ関数の使用例
117
+ let numbers: Array<number> = [3, 1, 4, 1, 5];
109
118
  numbers.sort(useCompare); // [1, 1, 3, 4, 5]
110
119
 
111
- const randomNum = useRandom(42); // シードベースの乱数
112
- const randomBigInt = useRandom(1000n); // BigInt乱数
120
+ let randomNum = useRandom(42); // シードベースの乱数
113
121
  ```
114
122
 
115
123
  ## ファクトリメソッド
116
124
 
117
- ### Optionalファクトリメソッド
125
+ ### Optionalのファクトリメソッド
118
126
 
119
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
120
- |---------|------|------------|------------|
127
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
128
+ |------|------|------------|------------|
121
129
  | `Optional.empty<T>()` | 空のOptionalを作成 | O(1) | O(1) |
122
- | `Optional.of<T>(value)` | 値を持つOptionalを作成 | O(1) | O(1) |
123
- | `Optional.ofNullable<T>(value)` | null許容Optionalを作成 | O(1) | O(1) |
124
- | `Optional.ofNonNull<T>(value)` | 非nullOptionalを作成 | O(1) | O(1) |
130
+ | `Optional.of<T>(value)` | 値を含むOptionalを作成 | O(1) | O(1) |
131
+ | `Optional.ofNullable<T>(value)` | 可能に空のOptionalを作成 | O(1) | O(1) |
132
+ | `Optional.ofNonNull<T>(value)` | nullでないOptionalを作成 | O(1) | O(1) |
125
133
 
126
134
  ```typescript
127
- // Optional使用例
128
- const emptyOpt = Optional.empty<number>();
129
- const presentOpt = Optional.of(42);
130
- const nullableOpt = Optional.ofNullable<string>(null);
131
- const nonNullOpt = Optional.ofNonNull("hello");
132
-
133
- presentOpt.ifPresent(val => console.log(val)); // 42を出力
134
- console.log(emptyOpt.orElse(100)); // 100を出力
135
+ // Optionalの使用例
136
+ let empty: Optional<number> = Optional.empty();
137
+ let present: Optional<number> = Optional.of(42);
138
+ let nullable: Optional<string> = Optional.ofNullable<string>(null);
139
+ let nonNull: Optional<string> = Optional.ofNonNull("hello");
140
+
141
+ present.ifPresent((val: number): void => console.log(val)); // 42を出力
142
+ console.log(emptyOpt.get(100)); // 100を出力
135
143
  ```
136
144
 
137
- ### Collectorファクトリメソッド
145
+ ### Collectorのファクトリメソッド
138
146
 
139
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
140
- |---------|------|------------|------------|
141
- | `Collector.full(identity, accumulator, finisher)` | 完全なコレクターを作成 | O(1) | O(1) |
142
- | `Collector.shortable(identity, interruptor, accumulator, finisher)` | 中断可能なコレクターを作成 | O(1) | O(1) |
147
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
148
+ |------|------|------------|------------|
149
+ | `Collector.full(identity, accumulator, finisher)` | 完全なCollectorを作成 | O(1) | O(1) |
150
+ | `Collector.shortable(identity, interruptor, accumulator, finisher)` | 中断可能なCollectorを作成 | O(1) | O(1) |
143
151
 
144
152
  ```typescript
145
- // コレクター変換の例
146
- const numbers = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
153
+ // Collectorの変換例
154
+ let numbers: Semantic<number> = from([3, 1, 4, 1, 5, 9, 2, 6, 5]);
147
155
 
148
- // パフォーマンス優先:非順序コレクターを使用
149
- const unordered = numbers
150
- .filter(n => n > 3)
151
- .toUnoredered();
156
+ // 性能優先: 未順序のCollectorを使用
157
+ let unordered: UnorderedCollectable<number> = from([3, 1, 4, 1, 5, 9, 2, 6, 5])
158
+ .filter((n: number): boolean => n > 3)
159
+ .toUnordered(); // 最高の性能
152
160
 
153
- // ソートが必要:順序付きコレクターを使用
154
- const ordered = numbers.sorted();
161
+ // 順序が必要: 順序付けられたCollectorを使用
162
+ let ordered: OrderedCollectable<number> = from([3, 1, 4, 1, 5, 9, 2, 6, 5])
163
+ .sorted();
155
164
 
156
165
  // 要素数をカウント
157
- let count = Collector.full(
158
- () => 0, // 初期値
159
- (accumulator, element) => accumulator + element, // 蓄積
160
- (accumulator) => accumulator // 完了
166
+ let count: Collector<number, number, number> = Collector.full(
167
+ (): number => 0, // 初期値
168
+ (accumulator: number, element: number): number => accumulator + element, // 累積
169
+ (accumulator: number): number => accumulator // 完了
161
170
  );
162
171
  count.collect(from([1,2,3,4,5])); // ストリームからカウント
163
- count.collect([1,2,3,4,5]); // イテラブルオブジェクトからカウント
172
+ count.collect([1,2,3,4,5]); // 反復可能オブジェクトからカウント
164
173
 
165
- let find = Collector.shortable(
166
- () => Optional.empty(), // 初期値
167
- (element, index, accumulator) => accumulator.isPresent(), // 中断
168
- (accumulator, element, index) => Optional.of(element), // 蓄積
169
- (accumulator) => accumulator // 完了
174
+ let find: Optional<number> = Collector.shortable(
175
+ (): Optional<number> => Optional.empty(), // 初期値
176
+ (element: number, index: bigint, accumulator: Optional<number>): Optional<number> => accumulator.isPresent(), // 中断
177
+ (accumulator: Optional<number>, element: number, index: bigint): Optional<number> => Optional.of(element), // 累積
178
+ (accumulator: Optional<number>): Optional<number> => accumulator // 完了
170
179
  );
171
- find.collect(from([1,2,3,4,5])); // 最初の要素を検索
172
- find.collect([1,2,3,4,5]); // 最初の要素を検索
180
+ find.collect(from([1,2,3,4,5])); // 最初の要素を見つける
181
+ find.collect([1,2,3,4,5]); // 最初の要素を見つける
173
182
  ```
174
183
 
175
- ### Semanticファクトリメソッド
184
+ ### Semanticのファクトリメソッド
176
185
 
177
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
178
- |---------|------|------------|------------|
179
- | `blob(blob, chunkSize)` | Blobからストリームを生成 | O(n) | O(chunkSize) |
180
- | `empty<E>()` | 空のストリームを生成 | O(1) | O(1) |
181
- | `fill<E>(element, count)` | 埋め尽くされたストリームを生成 | O(n) | O(1) |
182
- | `from<E>(iterable)` | 反復可能オブジェクトからストリームを生成 | O(1) | O(1) |
183
- | `generate<E>(element, interrupt)` | ジェネレータからストリームを生成 | O(1) | O(1) |
184
- | `interval(period, delay?)` | 定期的なインターバルストリームを生成 | O(1)* | O(1) |
185
- | `iterate<E>(generator)` | ジェネレータからストリームを生成 | O(1) | O(1) |
186
- | `range(start, end, step)` | 数値範囲ストリームを生成 | O(n) | O(1) |
187
- | `websocket(websocket)` | WebSocketからストリームを生成 | O(1) | O(1) |
186
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
187
+ |------|------|------------|------------|
188
+ | `animationFrame(period: number, delay: number = 0)` | 時間ベースのアニメーションフレームストリームを作成 | O(1)* | O(1) |
189
+ | `blob(blob, chunkSize)` | Blobからストリームを作成 | O(n) | O(chunkSize) |
190
+ | `empty<E>()` | 空のストリームを作成 | O(1) | O(1) |
191
+ | `fill<E>(element, count)` | 埋められたストリームを作成 | O(n) | O(1) |
192
+ | `from<E>(iterable)` | 反復可能オブジェクトからストリームを作成 | O(1) | O(1) |
193
+ | `interval(period, delay?)` | 時間ベースのインターバルストリームを作成 | O(1)* | O(1) |
194
+ | `iterate<E>(generator)` | ジェネレータからストリームを作成 | O(1) | O(1) |
195
+ | `range(start, end, step)` | 数値範囲のストリームを作成 | O(n) | O(1) |
196
+ | `websocket(websocket)` | WebSocketからストリームを作成 | O(1) | O(1) |
188
197
 
189
198
  ```typescript
190
- // Semanticファクトリメソッドの使用例
199
+ // Semanticのファクトリメソッドの使用例
200
+
201
+ // 時間ベースのアニメーションフレームからストリームを作成
202
+ animationFrame(1000)
203
+ .toUnordered()
204
+ .forEach(frame => console.log(frame));
191
205
 
192
- // Blobからストリームを作成(チャンク読み込み)
206
+ // Blobからストリームを作成(チャンク読み取り)
193
207
  blob(someBlob, 1024n)
194
- .toUnordered()
195
- .write(WritableStream)
196
- .then(callback) // ストリーム書き込み成功
197
- .catch(writeFi); // ストリーム書き込み失敗
208
+ .toUnordered()
209
+ .write(WritableStream)
210
+ .then(callback) // ストリームの書き込み成功
211
+ .catch(callback); // ストリームの書き込み失敗
198
212
 
199
- // 他のストリームと連結されるまで実行されない空ストリームを作成
213
+ // 結合されるまで実行されない空のストリームを作成
200
214
  empty<string>()
201
- .toUnordered()
202
- .join(); //[]
215
+ .toUnordered()
216
+ .join(); // []
203
217
 
204
- // 埋め尽くされたストリームを作成
205
- const filledStream = fill("hello", 3); // "hello", "hello", "hello"
218
+ // 埋められたストリームを作成
219
+ let filledStream = fill("hello", 3); // "hello", "hello", "hello"
206
220
 
207
- // 初期遅延2秒、実行周期5秒の時系列ストリームを作成
208
- // タイマーメカニズムで実装、システムスケジューリング制限による時間変動の可能性あり
209
- const intervalStream = interval(5000, 2000);
221
+ // 初期遅延2秒、実行周期5秒の時間ベースのストリームを作成、タイマーメカニズムに基づいて実装されています。システムスケジュールの精度制限により時間のドリフトが発生する可能性があります。
222
+ let intervalStream = interval(5000, 2000);
210
223
 
211
224
  // 反復可能オブジェクトからストリームを作成
212
- const numberStream = from([1, 2, 3, 4, 5]);
213
- const stringStream = from(new Set(["Alex", "Bob"]));
225
+ let numberStream = from([1, 2, 3, 4, 5]);
226
+ let stringStream = from(new Set(["Alex", "Bob"]));
214
227
 
215
- // 範囲ストリームを作成
216
- const rangeStream = range(1, 10, 2); // 1, 3, 5, 7, 9
228
+ // 数値範囲のストリームを作成
229
+ let rangeStream = range(1, 10, 2); // 1, 3, 5, 7, 9
217
230
 
218
231
  // WebSocketイベントストリーム
219
- const ws = new WebSocket("ws://localhost:8080");
232
+ let ws = new WebSocket("ws://localhost:8080");
220
233
  websocket(ws)
221
- .filter((event)=> event.type === "message") // メッセージイベントのみ監視
222
- .toUnordered() // イベントは通常ソート不要
223
- .forEach((event)=> receive(event)); // メッセージ受信
234
+ .filter((event): boolean => event.type === "message") // メッセージイベントのみをリッスン
235
+ .toUnordered() // イベントは通常順序付けられていません
236
+ .forEach((event): void => receive(event)); // メッセージを受信
224
237
  ```
225
238
 
226
239
  ## Semanticクラスメソッド
227
240
 
228
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
229
- |---------|------|------------|------------|
230
- | `concat(other)` | 二つのストリームを連結 | O(n) | O(1) |
231
- | `distinct()` | 重複排除 | O(n) | O(n) |
232
- | `distinct(comparator)` | コンパレーターを使用した重複排除 | O(n²) | O(n) |
241
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
242
+ |------|------|------------|------------|
243
+ | `concat(other)` | 二つのストリームを結合 | O(n) | O(1) |
244
+ | `distinct()` | 重複を削除 | O(n) | O(n) |
245
+ | `distinct(comparator)` | 比較子を使用して重複を削除 | O(n²) | O(n) |
233
246
  | `dropWhile(predicate)` | 条件を満たす要素を破棄 | O(n) | O(1) |
234
- | `filter(predicate)` | 要素のフィルタリング | O(n) | O(1) |
247
+ | `filter(predicate)` | 要素をフィルター | O(n) | O(1) |
235
248
  | `flat(mapper)` | フラットマッピング | O(n × m) | O(1) |
236
- | `flatMap(mapper)` | 新しい型へのフラットマッピング | O(n × m) | O(1) |
237
- | `limit(n)` | 要素数の制限 | O(n) | O(1) |
249
+ | `flatMap(mapper)` | 新しい型にフラットマッピング | O(n × m) | O(1) |
250
+ | `limit(n)` | 要素数を制限 | O(n) | O(1) |
238
251
  | `map(mapper)` | マッピング変換 | O(n) | O(1) |
239
- | `peek(consumer)` | 要素の検査 | O(n) | O(1) |
240
- | `redirect(redirector)` | インデックスのリダイレクト | O(n) | O(1) |
241
- | `reverse()` | ストリームの反転 | O(n) | O(1) |
242
- | `shuffle()` | ランダムシャッフル | O(n) | O(1) |
243
- | `shuffle(mapper)` | マッパーを使用したシャッフル | O(n) | O(1) |
252
+ | `peek(consumer)` | 要素を覗く | O(n) | O(1) |
253
+ | `redirect(redirector)` | インデックスをリダイレクト | O(n) | O(1) |
254
+ | `reverse()` | ストリームを逆転 | O(n) | O(1) |
255
+ | `shuffle()` | ランダムにシャッフル | O(n) | O(1) |
256
+ | `shuffle(mapper)` | マッパーを使用してシャッフル | O(n) | O(1) |
244
257
  | `skip(n)` | 最初のn要素をスキップ | O(n) | O(1) |
245
258
  | `sorted()` | ソート | O(n log n) | O(n) |
246
- | `sorted(comparator)` | コンパレーターを使用したソート | O(n log n) | O(n) |
247
- | `sub(start, end)` | サブストリームの取得 | O(n) | O(1) |
259
+ | `sorted(comparator)` | 比較子を使用してソート | O(n log n) | O(n) |
260
+ | `sub(start, end)` | サブストリームを取得 | O(n) | O(1) |
248
261
  | `takeWhile(predicate)` | 条件を満たす要素を取得 | O(n) | O(1) |
249
- | `translate(offset)` | インデックスの平行移動 | O(n) | O(1) |
250
- | `translate(translator)` | トランスレーターを使用した平行移動 | O(n) | O(1) |
262
+ | `translate(offset)` | インデックスを変換 | O(n) | O(1) |
263
+ | `translate(translator)` | 変換子を使用してインデックスを変換 | O(n) | O(1) |
251
264
 
252
265
  ```typescript
253
- // Semantic操作例
254
- const result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
255
- .filter(n => n % 2 === 0) // 偶数のフィルタリング
256
- .map(n => n * 2) // 2倍に変換
257
- .skip(1) // 最初の要素をスキップ
266
+ // Semantic操作の例
267
+ let result = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
268
+ .filter((n: number): boolean => n % 2 === 0) // 偶数をフィルター
269
+ .map((n: number): number => n * 2) // 2倍にする
270
+ .skip(1) // 最初のものをスキップ
258
271
  .limit(3) // 3要素に制限
259
- .toUnordered() // 非順序コレクターに変換
272
+ .toUnordered() // 順序付けられていないCollectorに変換
260
273
  .toArray(); // 配列に変換
261
274
  // 結果: [8, 12, 20]
262
275
 
263
- // 複雑な操作例
264
- const complexResult = range(1, 100, 1)
265
- .flatMap(n => from([n, n * 2])) // 各要素を2要素にマッピング
266
- .distinct() // 重複排除
267
- .shuffle() // ランダムシャッフル
268
- .takeWhile(n => n < 50) // 50未満の要素を取得
269
- .toOrdered() // 順序付きコレクターに変換
276
+ // 複雑な操作の例
277
+ let complexResult = range(1, 100, 1)
278
+ .flatMap((n: number): Semantics<number> => from([n, n * 2])) // 各要素を二つにマッピング
279
+ .distinct() // 重複を削除
280
+ .shuffle() // 順序をシャッフル
281
+ .takeWhile((n: number): boolean => n < 50) // 50未満の要素を取る
282
+ .toOrdered() // 順序付けられたCollectorに変換
270
283
  .toArray(); // 配列に変換
271
284
  ```
272
285
 
273
- ## 意味論的変換メソッド
286
+ ## Semanticの変換メソッド
274
287
 
275
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
288
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
276
289
  |------------|------------|------------|------------|
277
- | `sorted()` | 順序付きコレクターに変換 | O(n log n) | O(n) |
278
- | `toUnordered()` | 順序なしコレクターに変換 | O(1) | O(1) |
279
- | `toOrdered()` | 順序付きコレクターに変換 | O(1) | O(1) |
290
+ | `sorted()` | 順序付けられたCollectorに変換 | O(n log n) | O(n) |
291
+ | `toUnordered()` | 順序付けられていないCollectorに変換 | O(1) | O(1) |
292
+ | `toOrdered()` | 順序付けられたCollectorに変換 | O(1) | O(1) |
280
293
  | `toNumericStatistics()` | 数値統計に変換 | O(n) | O(1) |
281
- | `toBigintStatistics()` | bigint 統計に変換 | O(n) | O(1) |
294
+ | `toBigintStatistics()` | BigInt統計に変換 | O(n) | O(1) |
282
295
  | `toWindow()` | ウィンドウコレクターに変換 | O(1) | O(1) |
283
- | `toCollectable()` | `UnorderdCollectable` に変換 | O(n) | O(1) |
284
- | `toCollectable(mapper)` | カスタムコレクターに変換 | O(n) | O(1) |
296
+ | `toCollectable()` | `UnorderdCollectable`に変換 | O(n) | O(1) |
297
+ | `toCollectable(mapper)` | カスタマイズされたCollectableに変換 | O(n) | O(1) |
285
298
 
286
299
  ```typescript
287
- // 昇順ソート配列に変換
288
- from([6,4,3,5,2]) // ストリーム作成
289
- .sorted() // ストリームを昇順でソート
300
+ // 昇順に並べ替えられた配列に変換
301
+ from([6,4,3,5,2]) // ストリームを作成
302
+ .sorted() // ストリームを昇順に並べ替え
290
303
  .toArray(); // [2, 3, 4, 5, 6]
291
304
 
292
- // 降順ソート配列に変換
293
- from([6,4,3,5,2]) // ストリーム作成
294
- .soted((a, b) => b - a) // ストリームを降順でソート
305
+ // 降順に並べ替えられた配列に変換
306
+ from([6,4,3,5,2]) // ストリームを作成
307
+ .soted((a: number, b: number): number => b - a) // ストリームを降順に並べ替え
295
308
  .toArray(); // [6, 5, 4, 3, 2]
296
309
 
297
- // 反転配列へリダイレクト
310
+ // 逆順の配列にリダイレクト
298
311
  from([6,4,3,5,2])
299
- .redirect((element, index) => -index) // 反転順にリダイレクト
300
- .toOrderd() // リダイレクト後の順序を保持
312
+ .redirect((element, index): bigint => -index) // 逆順にリダイレクト
313
+ .toOrderd() // リダイレクトされた順序を保持
301
314
  .toArray(); // [2, 5, 3, 4, 6]
302
315
 
303
- // 反転配列へのリダイレクトを無視
316
+ // リダイレクトを無視して逆順の配列を得る
304
317
  from([6,4,3,5,2])
305
- .redirect((element, index) => -index) // 反転順にリダイレクト
306
- .toUnorderd() // リダイレクト順を破棄。この操作は `redirect`、`reverse`、`shuffle`、`translate` を無視する
318
+ .redirect((element: number, index: bigint) => -index) // 逆順にリダイレクト
319
+ .toUnorderd() // リダイレクトされた順序を無視します。この操作は`redirect`、`reverse`、`shuffle`、`translate`の操作を無視します
307
320
  .toArray(); // [2, 5, 3, 4, 6]
308
321
 
309
- // ストリームを反転して配列化
322
+ // ストリームを逆順に配列に変換
310
323
  from([6, 4, 3, 5, 2])
311
- .reverse() // ストリームを反転
312
- .toOrdered() // 反転順を保証
324
+ .reverse() // ストリームを逆順にする
325
+ .toOrdered() // 逆順を保証する
313
326
  .toArray(); // [2, 5, 3, 4, 6]
314
327
 
315
- // シャッフルしたストリームを上書きして配列化
328
+ // シャッフルされたストリームを上書きして配列に変換
316
329
  from([6, 4, 3, 5, 2])
317
- .shuffle() // ストリームをシャッフル
318
- .sorted() // シャッフル順を上書き。この操作は `redirect`、`reverse`、`shuffle`、`translate` を上書きする
330
+ .shuffle() // ストリームをシャッフルする
331
+ .sorted() // シャッフルされた順序を上書きする。この操作は`redirect`、`reverse`、`shuffle`、`translate`の操作を上書きする
319
332
  .toArray(); // [2, 5, 3, 4, 6]
320
333
 
321
334
  // ウィンドウコレクターに変換
@@ -324,80 +337,80 @@ from([6, 4, 3, 5, 2]).toWindow();
324
337
  // 数値統計に変換
325
338
  from([6, 4, 3, 5, 2]).toNumericStatistics();
326
339
 
327
- // bigint 統計に変換
340
+ // BigInt統計に変換
328
341
  from([6n, 4n, 3n, 5n, 2n]).toBigintStatistics();
329
342
 
330
- // データ収集用のカスタムコレクターを定義
331
- let customizedCollector = from([1, 2, 3, 4, 5]).toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
343
+ // データ収集のためのカスタムコレクターを定義
344
+ let customizedCollector = from([1, 2, 3, 4, 5])
345
+ .toCollectable((generator: Generator<E>) => new CustomizedCollector(generator));
332
346
  ```
333
347
 
334
- ## Collectable収集メソッド
335
-
336
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
337
- |---------|------|------------|------------|
338
- | `anyMatch(predicate)` | 一致する要素が存在するかチェック | O(n) | O(1) |
339
- | `allMatch(predicate)` | すべての要素が一致するかチェック | O(n) | O(1) |
340
- | `count()` | 要素のカウント | O(n) | O(1) |
341
- | `isEmpty()` | 空かどうかチェック | O(1) | O(1) |
342
- | `findAny()` | 任意の要素を検索 | O(n) | O(1) |
343
- | `findFirst()` | 最初の要素を検索 | O(n) | O(1) |
344
- | `findLast()` | 最後の要素を検索 | O(n) | O(1) |
345
- | `forEach(action)` | 全要素の反復処理 | O(n) | O(1) |
346
- | `group(classifier)` | 分類器によるグループ化 | O(n) | O(n) |
347
- | `groupBy(keyExtractor, valueExtractor)` | キー値抽出器によるグループ化 | O(n) | O(n) |
348
- | `join()` | 文字列への結合 | O(n) | O(n) |
349
- | `join(delimiter)` | 区切り文字を使用した結合 | O(n) | O(n) |
350
- | `nonMatch(predicate)` | 一致する要素がないかチェック | O(n) | O(1) |
351
- | `partition(count)` | 数量による分割 | O(n) | O(n) |
352
- | `partitionBy(classifier)` | 分類器による分割 | O(n) | O(n) |
353
- | `reduce(accumulator)` | 縮約操作 | O(n) | O(1) |
354
- | `reduce(identity, accumulator)` | 初期値付き縮約 | O(n) | O(1) |
355
- | `toArray()` | 配列への変換 | O(n) | O(n) |
356
- | `toMap(keyExtractor, valueExtractor)` | Mapへの変換 | O(n) | O(n) |
357
- | `toSet()` | Setへの変換 | O(n) | O(n) |
358
- | `write(stream)` | ストリームへの書き込み | O(n) | O(1) |
348
+ ## Collectableの集約メソッド
349
+
350
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
351
+ |------|------|------------|------------|
352
+ | `anyMatch(predicate)` | 任意の要素が一致するかどうか | O(n) | O(1) |
353
+ | `allMatch(predicate)` | すべての要素が一致するかどうか | O(n) | O(1) |
354
+ | `count()` | 要素数 | O(n) | O(1) |
355
+ | `isEmpty()` | 空かどうか | O(1) | O(1) |
356
+ | `findAny()` | 任意の要素を見つける | O(n) | O(1) |
357
+ | `findFirst()` | 最初の要素を見つける | O(n) | O(1) |
358
+ | `findLast()` | 最後の要素を見つける | O(n) | O(1) |
359
+ | `forEach(action)` | すべての要素を反復する | O(n) | O(1) |
360
+ | `group(classifier)` | クラスファイヤーでグループ化 | O(n) | O(n) |
361
+ | `groupBy(keyExtractor, valueExtractor)` | キー・バリュー抽出子でグループ化 | O(n) | O(n) |
362
+ | `join()` | 文字列として結合 | O(n) | O(n) |
363
+ | `join(delimiter)` | 区切り文字を使用して結合 | O(n) | O(n) |
364
+ | `nonMatch(predicate)` | 一致しない要素があるかどうか | O(n) | O(1) |
365
+ | `partition(count)` | 数でパーティション分割 | O(n) | O(n) |
366
+ | `partitionBy(classifier)` | クラスファイヤーでパーティション分割 | O(n) | O(n) |
367
+ | `reduce(accumulator)` | 減少操作 | O(n) | O(1) |
368
+ | `reduce(identity, accumulator)` | 初期値を持つ減少 | O(n) | O(1) |
369
+ | `toArray()` | 配列に変換 | O(n) | O(n) |
370
+ | `toMap(keyExtractor, valueExtractor)` | Mapに変換 | O(n) | O(n) |
371
+ | `toSet()` | Setに変換 | O(n) | O(n) |
372
+ | `write(stream)` | ストリームに書き込む | O(n) | O(1) |
359
373
 
360
374
  ```typescript
361
- // Collectable操作例
375
+ // Collectableの操作例
362
376
  const data = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
363
- .filter(n => n % 2 === 0)
377
+ .filter((n: number): boolean => n % 2 === 0)
364
378
  .toOrdered();
365
379
 
366
380
  // 一致チェック
367
- console.log(data.anyMatch(n => n > 5)); // true
368
- console.log(data.allMatch(n => n < 20)); // true
381
+ console.log(data.anyMatch((n: number): boolean => n > 5)); // true
382
+ console.log(data.allMatch((n: number): boolean => n < 20)); // true
369
383
 
370
384
  // 検索操作
371
- data.findFirst().ifPresent(n => console.log(n)); // 2
372
- data.findAny().ifPresent(n => console.log(n)); // 任意の要素
385
+ data.findFirst().ifPresent((n: number): void => console.log(n)); // 2
386
+ data.findAny().ifPresent((n: number): void => console.log(n)); // 任意の要素
373
387
 
374
388
  // グループ化操作
375
389
  const grouped = data.groupBy(
376
- n => n > 5 ? "large" : "small",
377
- n => n * 2
378
- );
379
- // {small: [4, 8], large: [12, 16, 20]}
390
+ (n: number): string => (n > 5 ? "" : ""),
391
+ (n: number): number => n * 2
392
+ ); // {小: [4, 8], 大: [12, 16, 20]}
380
393
 
381
- // 縮約操作
394
+ // 減少操作
382
395
  const sum = data.reduce(0, (acc, n) => acc + n); // 30
383
396
 
384
397
  // 出力操作
385
- data.join(", "); // "2, 4, 6, 8, 10"
398
+ data.join(", "); // "[2, 4, 6, 8, 10]"
386
399
  ```
387
400
 
388
401
  ## 統計分析メソッド
389
402
 
390
403
  ### NumericStatisticsメソッド
391
404
 
392
- | メソッド | 説明 | 時間計算量 | 空間計算量 |
393
- |---------|------|------------|------------|
405
+ | メソッド | 説明 | 時間複雑度 | 空間複雑度 |
406
+ |------|------|------------|------------|
394
407
  | `range()` | 範囲 | O(n) | O(1) |
395
408
  | `variance()` | 分散 | O(n) | O(1) |
396
409
  | `standardDeviation()` | 標準偏差 | O(n) | O(1) |
397
- | `mean()` | 平均値 | O(n) | O(1) |
410
+ | `mean()` | 平均 | O(n) | O(1) |
398
411
  | `median()` | 中央値 | O(n log n) | O(n) |
399
412
  | `mode()` | 最頻値 | O(n) | O(n) |
400
- | `frequency()` | 度数分布 | O(n) | O(n) |
413
+ | `frequency()` | 頻度分布 | O(n) | O(n) |
401
414
  | `summate()` | 合計 | O(n) | O(1) |
402
415
  | `quantile(quantile)` | 分位数 | O(n log n) | O(n) |
403
416
  | `interquartileRange()` | 四分位範囲 | O(n log n) | O(n) |
@@ -405,11 +418,11 @@ data.join(", "); // "2, 4, 6, 8, 10"
405
418
  | `kurtosis()` | 尖度 | O(n) | O(1) |
406
419
 
407
420
  ```typescript
408
- // 統計分析例
409
- const numbers = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
421
+ // 統計分析の例
422
+ let numbers = from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
410
423
  .toNumericStatistics();
411
424
 
412
- console.log("平均値:", numbers.mean()); // 5.5
425
+ console.log("平均:", numbers.mean()); // 5.5
413
426
  console.log("中央値:", numbers.median()); // 5.5
414
427
  console.log("標準偏差:", numbers.standardDeviation()); // ~2.87
415
428
  console.log("合計:", numbers.summate()); // 55
@@ -420,53 +433,52 @@ const objects = from([
420
433
  { value: 20 },
421
434
  { value: 30 }
422
435
  ]).toNumericStatistics();
423
-
424
- console.log("マップされた平均値:", objects.mean(obj => obj.value)); // 20
436
+ console.log("マッピングされた平均:", objects.mean(obj => obj.value)); // 20
425
437
  ```
426
438
 
427
439
  ## パフォーマンス選択ガイド
428
440
 
429
- ### 非順序コレクターを選択(パフォーマンス優先)
441
+ ### 順序を保証しないCollectorを選択(パフォーマンス優先)
430
442
  ```typescript
431
- // 順序保証が不要な場合
432
- const highPerformance = data
443
+ // 順序の保証が不要な場合、最高のパフォーマンスを得るために順序付けられていないCollectorを使用します
444
+ let highPerformance = data
433
445
  .filter(predicate)
434
446
  .map(mapper)
435
- .toUnoredered(); // 最高のパフォーマンス
447
+ .toUnordered(); // 最高のパフォーマンス
436
448
  ```
437
449
 
438
- ### 順序付きコレクターを選択(順序が必要)
450
+ ### 順序が必要なCollectorを選択(順序が必要)
439
451
  ```typescript
440
- // 要素の順序を維持する必要がある場合
441
- const ordered = data.sorted(comparator);
452
+ // 要素の順序を維持する必要がある場合、順序付けられたCollectorを使用します
453
+ let ordered = data.sorted(comparator);
442
454
  ```
443
455
 
444
- ### ウィンドウコレクターを選択(ウィンドウ操作)
456
+ ### ウィンドウ操作が必要なCollectorを選択(ウィンドウ操作)
445
457
  ```typescript
446
458
  // ウィンドウ操作が必要な場合
447
- const windowed = data
459
+ let window: WindowCollectable<number> = data
448
460
  .toWindow()
449
461
  .slide(5n, 2n); // スライディングウィンドウ
450
462
  ```
451
463
 
452
- ### 統計分析を選択(数値計算)
464
+ ### 数値計算が必要な統計分析を選択(統計分析)
453
465
  ```typescript
454
466
  // 統計分析が必要な場合
455
- const stats = data
467
+ let statistics: NumericStatistics<number> = data
456
468
  .toNumericStatistics(); // 数値統計
457
469
 
458
- const bigIntStats = data
459
- .toBigintStatistics(); // BigInt統計
470
+ let bigIntStatistics: BigintStatistics<bigint> = data
471
+ .toBigintStatistics(); // 大きな整数統計
460
472
  ```
461
473
 
462
474
  [GitHub](https://github.com/eloyhere/semantic-typescript)
463
475
  [NPMJS](https://www.npmjs.com/package/semantic-typescript)
464
476
 
465
- ## 重要な注意点
477
+ ## 重要な注意事項
466
478
 
467
- 1. **ソート操作の影響**: 順序付きコレクターでは、`sorted()`操作が`redirect`, `translate`, `shuffle`, `reverse`の効果を上書きします
468
- 2. **パフォーマンス考慮**: 順序保証が不要な場合は、`toUnoredered()`を優先してより良いパフォーマンスを得てください
469
- 3. **メモリ使用量**: ソート操作にはO(n)の追加スペースが必要です
470
- 4. **リアルタイムデータ**: Semanticストリームはリアルタイムデータに適しており、非同期データソースをサポートします
479
+ 1. **ソート操作の影響**:順序付けられたCollectorでは、`sorted()`操作は`redirect`、`translate`、`shuffle`、`reverse`の効果を上書きします。
480
+ 2. **パフォーマンスの考慮**:順序の保証が不要な場合は、`toUnordered()`を使用してパフォーマンスを向上させることをお勧めします。
481
+ 3. **メモリ使用量**:ソート操作には追加のO(n)のメモリが必要です。
482
+ 4. **リアルタイムデータ**:Semanticストリームはリアルタイムデータの処理に適しており、非同期データソースをサポートしています。
471
483
 
472
- このライブラリは、TypeScript開発者に強力で柔軟なストリーム処理能力を提供し、関数型プログラミングの利点と型安全性を組み合わせています。
484
+ このライブラリは、TypeScript開発者に強力で柔軟なストリーミング機能を提供し、関数型プログラミングの利点と型安全性の保証を組み合わせています。