35
なぜTypescriptは私が定義している関数がインターフェイスの宣言と一致しないと警告しますが、関数を呼び出せば警告します。 data
とtoUpper
-Typescript関数のインターフェイス
interface IFormatter {
(data: string, toUpper : boolean): string;
};
//Compiler does not flag error here.
var upperCaseFormatter: IFormatter = function (data: string) {
return data.toUpperCase();
}
upperCaseFormatter("test"); //but does flag an error here.
しかし、 'upperCaseFormatter'を使用すると、冗長なブール値があります:' upperCaseFormatter( "test"、true); // 'true'を除外するとコンパイラの警告が出ます。だから代わりに、インターフェイスは間違っている必要があります: 'interface IFormatter {(data:string、toUpper?:bool):string; } 'しかし、これは関数宣言にもかかわらず' toUpper'を指定せずに 'variableCaseFormatter'(' test ');だけで 'variableCaseFormatter'を呼び出せることを意味します。私の現在の混乱のより簡単な例については私の質問を参照してください:http://stackoverflow.com/questions/23305020 – AJP
@AJPあなたがきれいなコードを書いていたなら、あなたは可変ケースフォーマッタを書くことはありません。あなたはupperクラスのクラスとlowerクラスのクラスを書いて、厄介なブール引数を避けてください。 – Fenton
@AJP 'upperCaseFormatter'を直接呼び出す場合、インタフェースは無関係です。 –