関数の交差型の返り値をinferすると、交差の後ろの関数の返り値が得られる
from unionとtupleの変換
関数の交差型の返り値をinferすると、交差の後ろの関数の返り値が得られる
https://github.com/microsoft/TypeScript/issues/13298#issuecomment-724542300
code:ts
type C = ((arg: never) => true) & ((arg: never) => false);
type D = C extends (arg: never) => infer R ? R : never; // false;
でもCはneverじゃね?とコメントがあり、たしかに
とにかく、この関数型の返り値でinferをすると、この交差型の片方を取得できる挙動を利用したhackということだ
型パズル
string & numberはnever
( (()=>string) & (() => number))は()=>neverになるべきなのだが、ならない
そのうえで、上のようにこいつをextends () => infer Rをするとnumberが取れてしまう