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"型に推論される
```