2016-10-26 5 views
0

地獄の人typescript 2.0:デフォルト値のパラメータ

ここでは、厳密なヌルチェックモードを有効にした別のtypecript 2.0質問があります。あなたはすべてのパラメータのデフォルト値を持つ関数定義のであれば、:

(name?: string, age?: number) => void 

右:次に、すべてのパラメータがオプションと見なされ

(name = "Luis", age = 40)=>void 

、すなわち、それは我々が次のシグネチャを持っているかのようですか?私たちは、この署名していたときに今、何が起こる:私は厳格なヌル・チェック・モードを有効にすると、いけない、

(name: string, age: string) => void 

今:VSコードによると

(name = "Luis", age: number) => void 

を、その署名はと互換性があります

doIt(undefined, 30); 

それはOKコンパイルが、私は間違っていないよ場合は、未定義のは唯一のオプションパラメータの種類のリストに自動的に追加されます:呼び出し、次のエラーが発生します。私はデフォルトの初期化されたパラメータへの参照が見つかりませんでした。

それで、以前の呼び出しがOKならば、誰かが私が公式ドキュメントでどこの情報を見つけることができるのかを教えてもらえますか?

おかげで、

ルイス

+0

で問題を提起してお気軽に! –

+0

ハローダン。 私の場合、doItはこの関数doIt(name = "Luis"、age:number){....}のようなものです。 –

+0

これはコンパイル時にエラーが発生しなかった理由を説明していますが、@basaratは既に理由を説明しています。 –

答えて

1

クイックノート:あなたは、例えばシグネチャでデフォルトを指定することはできません以下は、エラーで次のコード継続

declare var foo: (name = "Luis", age = 40) => void; // ERROR: defaults only allowed in implementation 

var foo = (name = "Luis", age: number) => null; 
foo(undefined, 123); 
foo(null, 123); // ERROR 

namestring又はundefinedと互換性があることを示しています。ツールチップは間違っていますが、一般的な分析は正しいです。

は `のdoIt()`、コンパイルの失敗を引き起こす必要があると思うの正確な署名は何https://github.com/Microsoft/TypeScript/issues

関連する問題