首页 > 解决方案 > 是否有一种将流注释类型转换为非注释类型的自动化方法

问题描述

我使用流注释类型已经有一段时间了,现在想摆脱注释并使用“真正的”类型定义。

例如,我想转换

function upper(s/*: string*/)/*: string*/

function upper(s: string): string

并且正在寻找一种自动化的方式来做到这一点?

标签: flowtype

解决方案


我认为你要找的东西还不存在!

基于 ASTExplorer,看起来这些评论类型被解析为好像它们是正常的流类型

const a /* : string */ = "blah"

解析为:

"typeAnnotation": {
  "type": "TypeAnnotation",
  "loc": {
    "source": null,
    "start": {
      "line": 1,
      "column": 7
    },
    "end": {
      "line": 1,
      "column": 15
    }
  },
  "range": [
    7,
    15
  ],
  "typeAnnotation": {
    "type": "StringTypeAnnotation",
    "loc": {
      "source": null,
      "start": {
        "line": 1,
        "column": 9
      },
      "end": {
        "line": 1,
        "column": 15
      }
    },
    "range": [
      9,
      15
    ]
  }
},

因此,也许如果您只是删除节点并将其添加回来,它会将注释注释替换为常规注释?我只是把东西扔在这里,但如果我有很多替代品要做的话,我会这样做。

或者,您可以手动转换它们,但如果代码库足够大(并且您的兴趣水平足够高),那么操作 AST可能是完成此任务的一种有趣方式。


推荐阅读