为什么Flow允许你在这个例子中将Any类型转换为数字?

时间:2017-11-03 14:47:59

标签: flowtype

Flow docsAny类型中,他们说使用Any类型是不安全的,如果你这样做,你应该尽快投射该类型的操作结果可以避免Any泄漏到代码中的其他变量。此投射在下面的let foo: number = obj.foo行中完成。

// @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的{​​{1}}参数可以是任何参数。它的属性可以有任何东西。 为什么流程让你甚至可以进行上述演员?你不能保证foo是一个数字,因为obj可以是任何东西。

1 个答案:

答案 0 :(得分:0)

如评论中所述,any整点是允许"任何"要对其进行的操作。

这基本上就像是问为什么你的手机在静音模式下听不到铃声。 这是静音模式的重点。将铃声音量调整为其他值(例如,使用mixed),如果您想让它产生噪音。