流类型,属性前面的`+`符号是啥意思?

Posted

技术标签:

【中文标题】流类型,属性前面的`+`符号是啥意思?【英文标题】:Flow type, What does the `+` symbol mean in front a property?流类型,属性前面的`+`符号是什么意思? 【发布时间】:2018-03-02 11:57:09 【问题描述】:

我遇到了以下用 js FlowType 编写的代码(我很想知道 FlowType 上下文中 + 的值,而不是一般的 JS)。

您能否解释一下下面代码中属性前面的+ 符号是什么意思:

  export type User = 
      +name: string,
      +surname: string,
      +personId: PourceId,
    

我在文档中找不到任何参考,也欢迎任何链接。

【问题讨论】:

What does the plus sign do in '+new Date'的可能重复 不是重复的,它是 Flowtype 特有的。 正确,这不是重复我对 Flowtype 上下文中的 + 感兴趣。 【参考方案1】:

属性前面的+ 符号表示该属性是只读的

参考:https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

【讨论】:

【参考方案2】:

经过一些额外的研究,我发现+/- 表示属性的协变或逆变。

interface MyInterface 
  +covariant: number;     // read-only
  -contravariant: number; // write-only

关于方差的有趣文章:

https://flow.org/en/docs/lang/variance/

https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

【讨论】:

【参考方案3】:

+”符号表示该属性是只读和 '-' 表示该属性是只写并且如果没有任何'+''-' 符号表示该属性同时具有读/写访问权限。它可以在定义接口属性或类型属性时使用。

文档可在以下链接中找到:https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

【讨论】:

以上是关于流类型,属性前面的`+`符号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Rust 类型中的 & 符号是啥意思?

在这个 C90 未定义的行为定义中,“有符号或无符号类型”是啥意思?

请问mysql 中的ZEROFILL是啥意思

与类型转换相关的排名是啥意思?

JAVA中类型(char、long、int.....一共八个)有符号和无符号是啥意思

java 中类型前面有个<String> Stream是啥意思