https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions 戻り値に`asserts`構文が使えるようになった。 ```typescript function assert(condition: any, msg?: string): asserts condition { if (!condition) { throw new Error(msg); } } declare let d: Date | undefined; assert(d !== undefined); // この時点で d !== undefined が満たされることを保証する // そのため d は Date型に推論される declare let n: "hoge" | "huga" | "piyo"; assert(n === "huga") // この時点で n === "huga" が満たされることを保証する // そのため n は "huga"型に推論される ```