1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

javascriptからtypescriptへ変更を考えている場合

Last updated at Posted at 2022-03-05

javascriptからtypescriptへ変更を考えている方やtypescriptをやって見たいと思っている方が考慮して欲しい内容やその差について、お話ししたいと思います。

ネットで、よく言われているjavascriptとtypescriptの差は以下のものですね。

JavaScriptとの互換性が高い
型定義
クラスを作成することができる
動作が速い
事前のバグ検出がやりやすい

上記のことで、一つ一つお話しして見ましょう。
JavaScriptとの互換性が高いと言うお話しですが、typescriptはビルドされたら、javascriptになります。
つまり、javascriptベースの言語と言うことで、typscriptにてできることはjavascriptもできると言うことです。
内部の規約により、型定義しているように見えると言う感じですね。
その代わりに、javascriptに新しいバージョンが出てそのバージョンでしか利用できない機能があるとしたら、それをtypescript内部開発者が、開発してくれない限り、typescriptとしては、エラーになり、利用ができないとのことです。
実際プロジェクトをしている時、ECMAScript 2015が出て、利用したい関数がありましたが、typescriptではまだサポートしてなかったため、
その関数利用のモジュールだけjavascriptとして作成して、利用しました。

型定義もクラスもjavascriptにて開発できます。
ECMAScript 2015とES6からできて、実際ブラウザ側で、提供できるようになったことも2015年からです。
https://www.w3schools.com/js/js_classes.asp

動作が速いと言うことは、クラスやモジュール化などのオブジェクト指向開発による、速度改善みたいな感じもあるし、typescriptからjavascriptへの変換をしてくれる時の改善でもあります。言語的に早いと言えないのは、typesciptはjavascriptになるからです。

事前のバグ検出がやりやすいことについて、静的検査をするESLintがあるので、javascriptだとしても、事前検査ができます。
個人的にはまだESLintの経験は導入したばかの時点になるので、何とも言えない部分ではあります。
typescriptの方は楽ではありました。

WEB上に言われている理由がメリットだった時点も確かにありました。
しかし、今はあまり納得できなかったので、
本当のメリットは導入して、開発して見ても、上記の理由だったら、感じにくいと思って、
実際のメリットになりそうなものを考えてみました。

大きいプロジェクトで、もしくは全社的にフロント共通の何かの提供が必要、
又はオブジェクト指向の開発や型利用の開発の初めての一歩として、typescriptをやって見るとか
javascriptの性能改善が今のままでは難しいそうだと思っているとか。。。
現在のコードの整備がきれいにできていないから整備したいとか
一つのファイルで、色んなバージョンのjavascriptの支援をしたいとかの場合など。
などなど。

typescriptを導入する長所は色々あります。
やらない方が良いと言うお話しではなくて、実際の効果又は目的を明確にして、それを達成するためにどうしたら良いかを考えてやるともっとやりがいを感じられると思ってこのような雑談を書いて見ました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?