2017-08-23 7 views
-1

免責事項:質問は単に「どうすればいいのですか?私はが既にのコードを稼働していることに注意してください - 私はちょうど理解していませんなぜそれは働いている角度とタイプスクリプトでヌルのブール値を作るにはどうすればいいですか

私はこのような方法を設計しました。

public static isSomething(input?: string): boolean { 
    if (!input) 
    return null !== pickParts1("default") 
    return null !== pickParts2(input); 
} 

private static pickParts1(input: string) string[] { ... } 

private static pickParts2(input: string) string[] { ... } 

単純に言えば、結果が配列の場合(空でもそうでもない場合)はtrueを返します。結果がで定義されていない場合またはnull、私はfalseを返したいと思います。上記のコードは動作しますが、なぜ私は単にこのような結果を返すことができないのか混乱しています。

public static isSomething(input?: string): boolean { 
    if (!input) 
    return pickParts1("default") 
    return pickParts2(input); 
} 

私がそれが動作することを期待した理由は、条件付きのif-part(JavaScriptのように)で明らかにそうであることです。なぜそれがブール値にキャストされないのか分かりません。

私は(boolean)as booleanにより、鋳造しようとしたが、どうやらTypseScriptは、それが有効な構文(だけでなく、I 強打とロングショットを取っていた)ではないと考えています。それを動作させる方法はありますか?

誰かが私がなぜそれをしたいのか疑問を抱いています。なぜなら、私はその言語について驚いて興味があり、その限界をテストしたいからです。

+0

この具体例では、 'return !! pickParts1(" default ")' –

+0

@AlekseyLを使用できます。答えとして返事として投稿してください。 (私は彼のコンピュータに浸出しているので、私は誤って友達のアカウントから投稿しました。私は彼をログオフするにはあまりにも怠惰です。) –

答えて

0

戻り値の型としてbooleanを指定した場合、コンパイラは値がbooleanではなく、string[]であると見なします。
戻り値の型をanyと指定すると、任意の型の値を返すことができ、JS型の強制規則が適用されます。

+0

あなたはそれを投げてコンパイラが、私はそれがかなり醜いと思う。どちらの場合でも 'any'を使うよりも、型の恩恵を欲しがり、それに応じてコード化するか、そうでないかのどちらかです。 –

関連する問題