実現したいこと
以下、参考書に掲載されているコードになります。
最初に渡された実引数が関数doubleに問題なく代入され、エラーが出ずに出力される理由をご教示頂きたく思います。
発生している問題・分からないこと
以下、私の解釈に問題がないかご確認頂きたく思います。
誤っている箇所がありましたら、ご指摘をお願いします。
①関数binに二つの引数が渡される
②関数binはBinaryFunc型を使用しており、二つの引数は問題なく渡すことが出来る
BinaryFunc型の右辺に関数doubleが記述されているため呼び出す。
③関数doubleはUnaryFunc型を使用しており、仮引数が一つのため第一引数のみ残され、計算結果が返る
→現在の解釈だと、BinaryFunc型はUnaryFunc型の部分型だと思っている。(理由は、BinaryFuncはUnaryFunc型のnumber型の引数を一つ持っており、さらに第二引数も持っているため)
関数binの時点ではBinaryFunc型なのに、関数doubleを呼び出すとUnaryFunc型で下位互換?になっている。
にもかかわらず、何故エラーが出ずに処理できてしまうのかが分からないです。
該当のソースコード
index.ts
1type UnaryFunc = (arg: number) => number; 2type BinaryFunc = (left: number, right: number) => number; 3 4const double: UnaryFunc = (arg: number) => arg * 2; 5const add: BinaryFunc = (left: number, right: number) => left + right; 6 7const bin: BinaryFunc = double; 8console.log(bin(10, 100));
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
解決に至らなかった。
補足
特になし

回答2件
あなたの回答
tips
プレビュー