flow中问号在参数后面和在冒号有什么区别?declare type的作用是?看英文文档有点一知半解

发布于 2022-09-07 20:36:45 字数 276 浏览 23 评论 0

// vue源码片段
declare type ASTElementHandler = {
  value: string;
  params?: Array<any>;
  modifiers: ?ASTModifiers;// 这个好像是接收指定类型,undefined,null
};

vue源码出处

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

  1. params?: Array<any>; 问号在前,则类型可以是 数组 、void ,但不能是null
  2. params:? Array<any>; 问号在后,类型可以是 数组 、void,也可以是 null
  3. ASTModifiers是用户在flow文件中自定义的结构类型,根据项目需求来自行指定

4.declare type的作用 是因为:js本身是弱类型语言,需要在运行的时候才能判定类型是否有问题或者进行一些操作,效率低。
提前申明类型之后,一方面便于合作,更规范。另一方面可以在编译阶段就能检测出语法错误。节省了运行时间。

提笔书几行 2022-09-14 20:36:45

我再补充一点:
可选类型(Maybe Types)
可选类型是用于值可选的地方,用法就是在类型前加一个?,例如?string或?number。可选类型可以是null或void。

// @flow
function acceptsMaybeString(value: ?string) {
  // ...
}

acceptsMaybeString("bar");     // Works!
acceptsMaybeString(undefined); // Works!
acceptsMaybeString(null);      // Works!
acceptsMaybeString();          // Works!
可选对象属性
对象拥有可选属性的用法就是在属性后加一个?,可选对象属性可以void或省略,但不能是null。如:

// @flow
function acceptsObject(value: { foo?: string }) {
  // ...
}

acceptsObject({ foo: "bar" });     // Works!
acceptsObject({ foo: undefined }); // Works!
acceptsObject({ foo: null });      // Error!
acceptsObject({});                 // Works!

可选函数参数
函数拥有可选参数的用法是在参数后加一个?,可选参数可以void或省略,但不能是null。如:

// @flow
function acceptsOptionalString(value?: string) {
  // ...
}

acceptsOptionalString("bar");     // Works!
acceptsOptionalString(undefined); // Works!
acceptsOptionalString(null);      // Error!
acceptsOptionalString();          // Works!
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文