yytypescript / book

TypeScriptの入門書『サバイバルTypeScript』
https://typescriptbook.jp
939 stars 103 forks source link

記事への追記:TypeScriptにおける関数宣言の扱いについて #860

Open Kohki-Takatama opened 5 months ago

Kohki-Takatama commented 5 months ago

問題提起

https://github.com/yytypescript/book/edit/master/docs/reference/functions/function-declaration-and-hoisting.md

こちらのページについて、以下の2点から
「TSにおける関数宣言について」訂正・追記が望ましいと考えます。

1. さらに丁寧な解説

TypeScriptにおける「constを使用した関数式」についての説明はありますが
functionから始まる関数宣言」については記載がありません。
関数宣言についても記載するのが親切かと思います。

2. 誤解の余地を減らし、適切な解説を追加

[画像1]の「定義前の関数を呼び出そうとするとコンパイラーが指摘してくれます」という説明について
この表現は「『関数宣言』『関数式』どちらでも、定義前の呼び出しに対し指摘してくれる」という誤解を生むかと思います。

実際には、TypeScriptであっても「関数宣言の定義前呼び出し」については特に指摘はしないはずです。
([画像2]では関数宣言hello()に関しては指摘がなく、関数式hello2()には指摘が入っている)

具体的な変更内容

以上の2点から、「TSにおける関数宣言について」訂正・追記が望ましいと考えます。

具体的には、

  1. 「定義前の関数を...」→「定義前の関数式を...」に変更
  2. 以下の説明を追加 関数宣言の場合は、JavaScriptと同じくエラーは発生しません。
    巻き上げにより、問題なく実行されます。
    
    hello(); // Hello World

function hello() { console.log("Hello World"); };


### PRの作成について
PRの作成は私の方でさせていただこうと考えておりますが、
管理者の方にご対応いただいても問題ございません。

以上、ご意見・ご検討よろしくお願いします。

### 参考画像
[画像1]  
![スクリーンショット 2024-04-15 6 53 01](https://github.com/yytypescript/book/assets/132065581/64ba92b5-f2b9-4800-bb4c-16158431f9d4)
[画像2]  
![スクリーンショット 2024-04-15 6 42 33](https://github.com/yytypescript/book/assets/132065581/fdfc4020-cfdf-444d-99d2-43cb1e1a747c)