より引数が少ない型へのアップキャスト
次の2つを組み合わせると0引数の型の変数に2引数の関数を代入できたりする
- (x:T, y?:T) => T型の変数に(x:T, y:T) => T型の関数を代入できる
- (x:T) => T型の変数に(x:T, y?:T) => T型の関数を代入できる
上の1のような代入が必要なケースがあるのかよく分からない
var fn2: (x:number, y:number) => number fn2 = (x, y) => x * y; // fn2に入っている関数は2引数 var fn1_: (x:number, y?:number) => number fn1_ = fn2; var fn1: (x:number) => number fn1 = fn1_; var fn0_: (x?:number) => number fn0_ = fn1; var fn0: () => number fn0 = fn0_; // fn0の型は0引数の関数だが中身は2引数の関数 console.log(fn0()); // NaN