Skip to content

Commit 5c71a9b

Browse files
authored
Merge pull request #118 from rinse/fix-typo
fix typo
2 parents 55f9cc5 + 41c7c72 commit 5c71a9b

12 files changed

+37
-37
lines changed

async.rst

+9-9
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ JavaScriptの処理系には、現在のシステムのUIを担うレイヤー
3030
CPU速度が問題になることはあまりないとはいえ、コードで処理するタスクの中には長い時間の待ちを生じさせるものがいくつかあります。
3131
例えば、タイマーなどもそうですし、外部のサーバーやデータベースへのネットワークアクセス、ローカルのファイルの読み書きなどは往復でミリ秒、場合によっては秒に近い遅延を生じさせます。
3232
JavaScriptは、そのような時間のかかる処理は基本的に「非同期」という仕組みで処理を行います。
33-
タイマー呼び出しをする次のコードを見て見ます
33+
タイマー呼び出しをする次のコードを見てみます
3434

3535
.. code-block:: ts
3636
@@ -137,7 +137,7 @@ TypeScriptでは、 ``async`` を返す関数の返り値は必ず ``Promise``
137137

138138
TypeScriptの処理系は、この ``Promise`` の種類と、関数の返り値の型が同一かどうかを判断し、マッチしなければエラーを出してくれます。
139139
非同期処理の場合、実際に動かしてデバッグしようにも、送る側の値と、受ける側に渡ってくる値が期待通りかどうかを確認するのが簡単ではありません。
140-
ログを出して見ても、実際に実行されるタイミングがかなりずれていることがありえます。
140+
ログを出してみても、実際に実行されるタイミングがかなりずれていることがありえます。
141141
TypeScriptを使うメリットには、このように実際に動かすデバッグが難しいケースでも、型情報を使って「失敗するとわかっている実装」を見つけてくれる点にあります。
142142

143143
比較的新しく作られたライブラリなどは最初から\ ``Promise``\ を返す実装になっていると思いますが、そうでないコールバック関数方式のコードを扱う時は ``new Promise``\ を使って\ ``Promise``\ 化します。
@@ -175,7 +175,7 @@ Node.js標準にもありますし、npmで調べてもたくさんあります
175175

176176
TypeScriptで提供されている ``if`` や ``for`` 、 ``while`` などは関数呼び出しを伴わないフラットなコードなので\ ``await``\ とも一緒に使えます。
177177
``Promise`` やコールバックを使ったコードで、条件によって非同期処理を1つ追加する、というコードを書くのは大変です。
178-
試しに、TypeScriptのPlayGroundで下記のコードを変換してみるとどうなるか見て見ると複雑さにひっくり返るでしょう
178+
試しに、TypeScriptのPlayGroundで下記のコードを変換してみるとどうなるか見てみると複雑さにひっくり返るでしょう
179179

180180
.. code-block:: ts
181181
@@ -222,7 +222,7 @@ TypeScriptで提供されている ``if`` や ``for`` 、 ``while`` などは関
222222

223223
``Promise`` は「時間がかかる仕事が終わった時に通知するという約束」という説明をしました。
224224
みなさんは普段の生活で、時間がかかるタスクというのを行ったことがありますよね?
225-
味噌汁をガスレンジあたためつつ、ご飯を電子レンジで温め、両方終わったらいただきます、という具合です。
225+
味噌汁をガスレンジで温めつつ、ご飯を電子レンジで温め、両方終わったらいただきます、という具合です。
226226
``Promise`` および、その完了を待つ ``await`` を使えば、そのようなタスクも簡単に実装できます。
227227

228228
.. code-block:: ts
@@ -243,8 +243,8 @@ TypeScriptで提供されている ``if`` や ``for`` 、 ``while`` などは関
243243
``味噌汁温め()`` と ``ご飯温め()`` は ``async`` がついた関数です。
244244
省略可能ですがあえて返り値に ``Promise`` をつけています。
245245
これまでの例では、 ``async`` 関数を呼ぶ時には ``await`` をつけていました。
246-
``await`` をつけると、待った後の結果(ここでは味噌汁とご飯のインスタンス)が帰ってきます
247-
``await`` をつけないと、 ``Promise`` そのものが帰ってきます
246+
``await`` をつけると、待った後の結果(ここでは味噌汁とご飯のインスタンス)が返ってきます
247+
``await`` をつけないと、 ``Promise`` そのものが返ってきます
248248

249249
この ``Promise`` の配列を受け取り、全部の ``Promise`` が完了するのを待つのが ``Promise.all()`` です。
250250
``Promise.all()`` は、引数のすべての結果が得られると、解決して結果をリストで返す ``Promise`` を返します。
@@ -256,7 +256,7 @@ TypeScriptで提供されている ``if`` や ``for`` 、 ``while`` などは関
256256
なお、 ``Promise.all()`` の引数の配列に、 ``Promise`` 以外の要素があると、即座に完了する ``Promise`` として扱われます。
257257

258258
類似の関数で ``Promise.race()`` というものがあります。
259-
これは ``all()`` と似ていますが、全部で揃うと実行されるわけではなく、どれか一つでも完了すると呼ばれます。
259+
これは ``all()`` と似ていますが、全部が揃うと実行されるわけではなく、どれか一つでも完了すると呼ばれます。
260260
レスポンスの値は、引数のうちのどれか、ということで、結果を受け取る場合は処理が少し複雑になります。
261261
結果を扱わずに、5秒のアニメーションが完了するか、途中でクリックした場合には画面を更新する、みたいな処理には適しているかもしれません。
262262

@@ -290,14 +290,14 @@ TypeScriptで提供されている ``if`` や ``for`` 、 ``while`` などは関
290290
)
291291
);
292292
293-
図で見て見ると、この違いは一目瞭然でしょう。
293+
図で見てみると、この違いは一目瞭然でしょう。
294294

295295
.. figure:: images/async/loop.png
296296

297297
``Promise.all()`` が適切ではない場面もいくつかあります。
298298

299299
例えば、外部のAPI呼び出しをする場合、たいてい、秒間あたりのアクセス数が制限されています。
300-
配列に100個の要素があるからといって100並列でリクエストを投げるとエラーが帰って来て正常に処理が終了しないこともありえます
300+
配列に100個の要素があるからといって100並列でリクエストを投げるとエラーが返ってきて正常に処理が終了しないこともありえます
301301
その場合は、並列数を制御しつつ ``map()`` と同等のことを実現してくれる ``p-map`` [#]_ といったライブラリを活用すると良いでしょう。
302302

303303
.. [#] https://www.npmjs.com/package/p-map

class.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ JavaScriptではまだStage 3の機能ですが、TypeScriptですでに使え
444444
これらの機能は、言語の文化とか、他の代替文法の有無とかで使われ方が大きく変わってきます。
445445

446446
TypeScript界隈では、Angularなどのフレームワークではインタフェースが多用されています。
447-
ユーザーが実装するコンポーネントなどのクラスにおいて、Anguarが提供するサービスを受けるためのメソッドの形式が決まっていて、実装部分の中身をライブラリユーザーが実装するといった使われ方をしています。
447+
ユーザーが実装するコンポーネントなどのクラスにおいて、Angularが提供するサービスを受けるためのメソッドの形式が決まっていて、実装部分の中身をライブラリユーザーが実装するといった使われ方をしています。
448448
``OnInit`` をimplementsすると、初期化時に呼び出されるといった具合です。
449449

450450
継承が必要となるのは実装も提供する必要がある場合ですが、コードが追いかけにくくなるとか、拡張性のあるクラス設計が難しいとかもあり、引き継ぐべきメソッドが大量にあるクラス以外で積極的に使うケースはあまり多くないかもしれません。

complex.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ JSON(JavaScript Object Notation)
428428
プレーンテキストであり、書きやすく読みやすい(XMLやSOAPと比べて)こともありますし、JavaScriptでネイティブで扱えるため、API通信で使われるデータフォーマットとしてはトップシェアを誇ります。
429429

430430
JSONをパースすると、オブジェクトと配列で階層構造になったデータができあがります。
431-
通信用のライブラリでは、パース済みの状態でレスポンスが帰ってきたりするため、正確ではないですが、このオブジェクト/配列も便宜上、JSONと呼ぶこともあります。
431+
通信用のライブラリでは、パース済みの状態でレスポンスが返ってきたりするため、正確ではないですが、このオブジェクト/配列も便宜上、JSONと呼ぶこともあります。
432432

433433
.. code-block:: ts
434434
:caption: JSONとオブジェクト
@@ -438,7 +438,7 @@ JSONをパースすると、オブジェクトと配列で階層構造になっ
438438
// 省略可能。通常はnull
439439
// 3つめは配列やオブジェクトでインデントするときのインデント幅
440440
// 省略可能。省略すると改行なしの1行で出力される
441-
const json = JSON.stringfy(smallAnimal, null, 2);
441+
const json = JSON.stringify(smallAnimal, null, 2);
442442
443443
// これは複製されて出てくるので、元のsmallAnimalとは別物
444444
const smallAnimal2 = JSON.parse(json);
@@ -447,7 +447,7 @@ JSONはJavaScript/TypeScriptのオブジェクト定義よりもルールが厳
447447
たとえば、キーは必ずダブルクオートでくくらなければなりませんし、配列やオブジェクトの末尾に不要なカンマがあるとエラーになります。
448448
その場合はJSON.parse()の中で ``SyntaxError`` 例外が発生します。
449449
特に、JSONを便利だからとマスターデータとして使っていて、非プログラマーの人に、編集してもらったりしたときによく発生します。
450-
あとは、JSONレスポンスを期待しているウェブサービスの時に、サーバー側でエラーが発生して、 ``Forbidden`` という文字列が帰ってきた場合(403エラー時のボディ)にも発生します。
450+
あとは、JSONレスポンスを期待しているウェブサービスの時に、サーバー側でエラーが発生して、 ``Forbidden`` という文字列が返ってきた場合(403エラー時のボディ)にも発生します。
451451

452452
.. code-block:: text
453453
:caption: JSONパースのエラー

exception.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ JavaScriptの言語の標準に含まれていない、処理系独自の機能
126126
}
127127
}
128128
129-
よくやりがちなのが、 ``ok`` の確認をしない(ステータスコードが200以外でJSON以外が帰ってきているときに)JSONをパースしようとしてエラーになることです。
129+
よくやりがちなのが、 ``ok`` の確認をしない(ステータスコードが200以外でJSON以外が返ってきているときに)JSONをパースしようとしてエラーになることです。
130130
``404 Not Found`` のときは、ボディが ``Not Found`` というテキストになるので、未知のトークン ``N`` というエラーになります。あとは403 Forbiddenのときには、未知のトークン ``F`` のエラーが発生します。
131131

132132
.. code-block:: text
@@ -302,7 +302,7 @@ JavaScriptの言語の標準に含まれていない、処理系独自の機能
302302
console.log(e);
303303
}
304304
305-
エラーを発生させるには、 ``Promise`` 作成時のコールバック関数の2つめの引数の ``reject()`` コールバック関数に ``Error`` オブジェクトを渡しても良いですし、
305+
エラーを発生させるには、 ``Promise`` 作成時のコールバック関数の2つめの引数の ``reject()`` コールバック関数に ``Error`` オブジェクトを渡しても良いですし、
306306
``then()`` 節の中で例外をスローしても発生させることができます。
307307

308308
.. code-block:: ts
@@ -345,7 +345,7 @@ JavaScriptの言語の標準に含まれていない、処理系独自の機能
345345
* 原因: ネットワークエラー
346346
* リカバリー: リトライ
347347

348-
* サーバーにリクエストを送ってみたら400エラーが帰ってきた
348+
* サーバーにリクエストを送ってみたら400エラーが返ってきた
349349

350350
* 原因: リクエストが不正
351351
* リカバリー(開発時): 本来のクライアントのロジックであればバリデーションで弾いていないといけないのでこれは潰さないといけない実装バグ。とりあえずスタックトレースとかありったけの情報をconsole.logに出しておく。

function.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
そこで理解できる大きさにグループ化して、名前をつけたものが関数です。関数呼び出しはネストできるので、難しいロジックに名前をつけて関数を作り、それらのロジックを並べたちょっと複雑なタスクを人間の仕事に近い高水準な関数にできます。関数は決まった処理を単純に実行するだけではなく、引数をとって、柔軟に動作させることもできますし、返り値を返すこともできます。
77

8-
どの程度の分量が適切かはロジックの複雑さによります。単純な仕事を延々と行っている(Reactのコンポーネントのレンダリングなど)であれば、数画面分のコードでもなんとかなるでしょうし、帰って細かく分け過ぎてしまうと、全体像の把握が難しくなります。一方で複雑なロジックだと20行でも難しいかもしれません。
8+
どの程度の分量が適切かはロジックの複雑さによります。単純な仕事を延々と行っている(Reactのコンポーネントのレンダリングなど)であれば、数画面分のコードでもなんとかなるでしょうし、かえって細かく分け過ぎてしまうと、全体像の把握が難しくなります。一方で複雑なロジックだと20行でも難しいかもしれません。
99

1010
関数の基本形態は以下の通りです。
1111

functional.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ JavaScriptで実現できる関数型プログラミングのテクニックは
4040

4141
* ``map()``: 元のデータの各要素に何かしらの加工を行った新しい配列を作る
4242
* ``forEach()``: 元のデータの各要素に対するループを行う
43-
* ``fileter``: 元のデータの書く要素を評価し、選択されたものだけを保持する新しい配列を作る
43+
* ``filter``: 元のデータの書く要素を評価し、選択されたものだけを保持する新しい配列を作る
4444

4545
これは配列の例ですが、複合型の場合に値そのものを書き換えるのではなく、書き換えた別のバージョンを作っていくのがポイントです。
4646
オブジェクト指向はデータと操作が結びついていますが、関数型はデータとそれに対する操作を切り離すと共に、データを複製するという異なったアプローチを取ります。

libenv.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ package.jsonで手を加えるべきは次のところぐらいですね。
122122
"module": "dist-esm/index.js",
123123
"types": "dist-cjs/index.d.ts",
124124
"scripts": {
125-
"build": "npm-run-all -s build:cjs buid:esm",
125+
"build": "npm-run-all -s build:cjs build:esm",
126126
"build:cjs": "tsc --project . --module commonjs --outDir ./dist-cjs",
127127
"build:esm": "tsc --project . --module es2015 --outDir ./dist-esm"
128128
}
@@ -158,7 +158,7 @@ package.jsonで手を加えるべきは次のところぐらいですね。
158158

159159
* TypeScriptでライブラリのコードを記述する
160160
* 使う人は普段通りrequire/importすれば、特別なツールやライブラリの設定をしなくても適切なファイルがロードされる。
161-
* 使う人は、別途型定義ファイルを自作したり、別パッケージをインストールしなくても、普段通りrequire/importするだけでTypeScriptの処理系やVisual Stuido Codeが型情報を認識する
161+
* 使う人は、別途型定義ファイルを自作したり、別パッケージをインストールしなくても、普段通りrequire/importするだけでTypeScriptの処理系やVisual Studio Codeが型情報を認識する
162162
* Tree Shakingの恩恵も受けられる
163163

164164
``package.json`` の ``scripts`` のところに、開発に必要なタスクがコマンドとして定義されています。npmコマンドを使って行うことができます。

module.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ Node.js向けに出力する場合は、 ``import`` と ``export`` を、CommonJ
223223
}
224224
225225
// リネームしてエクスポート
226-
export { favorite as favariteFood };
226+
export { favorite as favoriteFood };
227227
228228
複数のファイル内容をまとめてエクスポート
229229
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)