2016-08-28 10 views
-1

だから我々は行うことができます:私は活字体過負荷矢印機能

export function myMethod (param: number) :number 
export function myMethod (param: string) :string 

export function myMethod (param: string | number): string | number { 
    if (typeof param === 'string') { 
    return param.toUpperCase() 
    } else { 
    return param + 1 
    } 
} 

宣言し、矢印の機能とそれを実装することはできますか?

export var myMethodArror = (param: string): string 
export var myMethodArror = (param: number): number 

export var myMethodArror = (param: string | number): string | number => { 
.. 
} 

私は変数の宣言を複製することはできませんが、私の質問があることを認識しています:それは、矢印表記を使用して関数のオーバーロードを作成することは可能でしょうか?

+1

もちろん、うまくいきません。変数は2回宣言することはできず、変数宣言は関数の署名を宣言しません。これは矢印関数の問題ではありません。 'export var myMethodArr = function(...)'を実行しようとした場合も同様です。 –

+0

しかし、私の質問は、矢印の表記を使って過負荷を作ることが可能です – WHITECOLOR

+1

署名は名前付き関数で宣言する必要があります。矢印機能は匿名です。したがって、私が言ったように、いいえ、あなたはそれを試したかどうか分かりません。 –

答えて

2

オーバーロードされた署名の宣言は常にfunctionキーワードと関数名を持つ

​​

です。

あなたの構文

var myMethodArror = (param: string): string; 

は無効です。矢印関数の始まりのようなものを変数に代入しようとしていますが、関数には本体がありません。あなたがエラーを取得します

「=>」は

を期待あなたはAA別の署名でこれを繰り返した場合、あなたはまた、重複したプロパティ・エラー、またはおそらくエラーになります

後続の変数宣言は、同じ型でなければなりません。

これは矢印機能に固有のものではありません。あなたは

をもたらすであろう

var myMethodArror = function(param: string): string; 

を実行しようとしました場合にも、同じ問題が関数本体が欠落しているため、 '{'

を期待生じるであろう。

+0

良い。ありがとうございました。 – WHITECOLOR