技術とかの雑なToday I Learnedメモ

assert functions

assert functions

assert functions というのを知った。

TypeScript 3.7の`asserts x is T`型はどのように危険なのか - Qiita

TypeScript: Documentation - TypeScript 3.7

3.7 からあったのに……。

ページ内のコードをそのまま引用すると、

function assertIsString(val: any): asserts val is string {
  if (typeof val !== "string") {
    throw new AssertionError("Not a string!");
  }
}

というやつ。

この関数がエラーを投げなかった場合は引数の val が string 型であることが確定する。

なるほどな〜。

で、これをアロー関数で書いたんだけど、なぜか呼び出すときにエラーが出てしまい function キーワードだと大丈夫だった。

これがなんでか全然分からん。

従来の関数とアロー関数の違い | TypeScript入門『サバイバルTypeScript』

違いによってなんか分かるかなと思ったけどわかりませんでした。有識者の方いれば教えてください……。