This repository was archived by the owner on Nov 15, 2024. It is now read-only.

Description
このプロジェクトでやることではないが、忘れないようにメモ
booleanとして推論される式単体を返す関数fの条件部分をifの条件部分にして、その内部で
- 本来の戻り値型である
expr is Type について、Typeを取るIIFEをexprで呼び出す
ことによりtscが満足できる条件かどうか確認する。例えば
function evil(v: 1 | 2): v is 1 {
return v === 2;
}
はtscによってエラーが出ない。合ってようが間違ってようが全面的にプログラマを信頼するからだ。
しかし、lintする時は内部的に
function testEvil(e: 1 | 2): void {
if (e === 1) {
((_: 2) => {})(e);
}
}
に変換し、再度型チェックを行う。これは
TS2345: Argument of type 1 is not assignable to parameter of type 2
で型チェックに通らず失敗する。なのでlintされるべきである。