我一直在使用流注释类型,现在想要删除注释并使用“真实”类型定义。
我希望转换
function upper(s/*: string*/)/*: string*/
到
function upper(s: string): string
我正在寻找一种自动化方式吗?
答案 0 :(得分:1)
我不会想到你正在寻找的东西,但是!
基于ASTExplorer,it looks like those comment types are parsed as if they are normal flow types:
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 可能是一种有趣的方法来完成这项工作。