2017-11-03 9 views
0

Flow docsAnyタイプでは、Anyタイプを使用するのは安全ではないと言います。Anyがコード内の他の変数に漏れるのを避けるため、できるだけ早くそのタイプの演算結果をキャストする必要があります。このキャスティングは下記のlet foo: number = obj.foo行で行われます。パラメータobjためFlowは、この例ではNumberをAny型にキャストできるのはなぜですか?

// @flow 
function fn(obj: any) /* (:number) */ { 
    let foo: number = obj.foo; 
    let bar /* (:number) */ = foo * 2; 
    return bar; 
} 

let bar /* (:number) */ = fn({ foo: 2 }); 
let baz /* (:string) */ = "baz:" + bar; 

fnの引数には、何もすることができます。プロパティは何でも持つことができます。 なぜあなたは上記のキャスティングを行うことができますか?obj.fooは何でもかまいませんので、fooが数字になることは保証できません。

+1

'obj'は型指定されていません。したがって、あなたの明示的な型名の注釈 'let foo:number'が正しいことが、フローに確信を持たなければなりません。あなたは流れから何を期待しますか?あなたの型注釈を信用しないようにするには?型の安全を望むなら、 'any'を使わないでください。 – ftor

+1

ええ、 'any'を使うと、文字通り、あなたがしていることを挫折させていることを伝えています。 – loganfsmyth

答えて

0

コメント内に記載されているように、anyは、「any」操作を実行できるようにすることです。

これは、サイレントモードでいたときにお使いの携帯電話が聴覚的に鳴らない理由を尋ねるような基本的です。 サイレントモードのポイントはです。ノイズを発生させたい場合は、リンガー音量を他の音量に変更します(つまり、mixedを使用)。

関連する問題