技術記事以外

技術記事以外の振り返りやその日学んだことのちょっとしたメモなどを置く予定です

今日の学習メモ

TypeScript Meetup#4

Async Function and Runtime Error Tracking by lacolaco-san

  • async/awaitをES2015にcompileすると、__awaiterという実装に置き換えられる。
  • これは、各xx.jsファイルごとに作成されるので、最終成果物の中に重複が生じる。
  • tslibというランタイムライブラリを使うと、これをimport awaiter from tslibに置換できて、重複を回避できる。
  • この時、もしasync/awaitで受け取ったエラーをre-throwしているといくつか問題が起きる。
  • 1つは、Promiseを返すawaiterの中でスローされることでerrorがPromiseのrejectに変わり、UnhandledRejectionになってしまうこと。これはErrorとは別のイベントになる。
  • もう1つは、ブラウザで表示する時tslibのawaiterを通るのでスタックトレースのレイヤーが深くなってしまうこと。
  • 結論として、tslibは重複回避できるので条件に合うときは使うといいが、エラーをリスローするのは避けたほうが良いかもしれない。