ユーザー定義型ガード
外部からデータを受け取る場合、アプリが停止することを防ぐためにデータの型をチェックする必要がある typeof演算子やin演算子の他、ユーザー定義型ガードを利用することでチェックできる
例
{ "setting1": 1, "setting2": "a" }
import * as data from "./json/data.json"; type Data = { setting1: number, setting2: string, } /** * ユーザ定義型ガード * 関数の返り値の型を 引数 X is T と書くことで、 * 条件がtrueを返す場合は X は T であり、 * falseを返す場合は T ではないとTypeScriptに指示することができる */ const isData = (arg: unknown): arg is Data => { const data = arg as Data return ( typeof data?.setting1 === "number" && typeof data?.setting2 == "string" ) }; if (isData(data)) { console.log("OK") } else { console.log("NG") } // OK
備考
ユーザー定義型ガードを自分で書くのは面倒かつ危険なのでライブラリが色々ある io-ts など