美文网首页
Flow任意类型(Any Types)

Flow任意类型(Any Types)

作者: vincent_z | 来源:发表于2018-01-25 22:26 被阅读0次

任意类型(Any Types)

任意类型any使你可以避免类型检查。但这样做并不提倡,因为不安全。
例如,下面的代码不会报告任何错误:

// @flow
function add(one: any, two: any): number {
  return one + two;
}

add(1, 2);     // Works.
add("1", "2"); // Works.
add({}, []);   // Works.

即使是会导致运行时错误的代码也不会被Flow捕获:

// @flow
function getNestedProperty(obj: any) {
  return obj.foo.bar.baz;
}

getNestedProperty({});

只有几种情况可以考虑使用any

  • 你正在将现有代码转换为使用Flow类型检查的过程中,并且当前已阻止检查代码类型检查(你可能想先转换其他代码)。
  • 你确定你的代码正常工作,但是由于某些原因,Flow无法正确工作。

避免泄露any

当你定义一个值类型为any时,Flow会把与该值相关的所有操作的结果都推导成any类型。

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

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

阻止这种情况发生的手段是尽可能早地摒弃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;

相关文章

  • Flow任意类型(Any Types)

    任意类型(Any Types) 任意类型any使你可以避免类型检查。但这样做并不提倡,因为不安全。例如,下面的代码...

  • day2 任意值

    任意值(Any)用来表示允许赋值为任意类型。 但如果是 any 类型,则允许被赋值为任意类型。 任意值的属性和方法...

  • TypeScript 简洁教程 TS

    TypeScript 基础类型 数据类型关键字描述任意类型any声明为 any 的变量可以赋予任意类型的值数字类型...

  • TS-数据类型

    一、 基础的数据类型 任意类型any:声明为 any 的变量可以赋予任意类型的值。 数字类型number:双精度 ...

  • Flow注释类型(Comment Types)

    注释类型(Comment Types) Flow中的JavaScript使用一种特殊的注释语法。 Flow支持基于...

  • Swift-可选链及类型、类型转换相关关键字

    一、可选链(Optional Chining) 二、Any、AnyObject、is、as Any:代表任意类型。...

  • Swift-元类型

    Any,AnyObject Any:可以代表任意类型(枚举,结构体,类,函数类型) AnyObject:可以代表任...

  • Swift学习之Any、AnyObject、AnyClass

    一、Any和AnyObject Any:可以代表任意类型(枚举、结构体、类,也包括函数类型)AnyObject:可...

  • vue源码学习 --- flow(6)

    原文地址: https://flow.org/en/docs/types/classes/ 类和类类型 基本语法,...

  • Flow模块类型(Module Types)

    模块类型(Module Types) 导入和导出类型 在Flow中,你可以导入导出类型别名,接口和类。 expor...

网友评论

      本文标题:Flow任意类型(Any Types)

      本文链接:https://www.haomeiwen.com/subject/arbbaxtx.html