Flow任意类型(Any Types)

任意类型(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;
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 基本数据类型 JavaScript有几种不同的基本数据类型 布尔(Booleans) 字符串(Strings) 数...
    vincent_z阅读 1,316评论 0赞 1
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 27,003评论 9赞 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,297评论 19赞 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 4,300评论 1赞 10
  • 上周的斩笔里写的这周需要更新的内容,就是立一把十二月的FLAG。 过去这一个月想了好多,问了自己很多问题,试图寻求...
    东言立阅读 456评论 2赞 1

友情链接更多精彩内容