Flow中是否存在与TypeScript的`as const`断言等价的语法?
Flow中TypeScript as const的等价替代方案
目前Flow稳定版尚未推出和as const完全对等的原生语法糖,你提到的开放2年的官方相关提案截至当前仍无落地进展。
日常开发可以用以下两种方案替代繁琐的手动类型标注:
- 方案1:使用
Object.freeze
Flow会对Object.freeze冻结的对象自动做字面量类型收窄,同时标记属性为只读,推导效果和TS的as const几乎一致:const realyConstObj = Object.freeze({key1: 'val1', key2: 'val2'}) // Flow推导类型:{| +key1: 'val1', +key2: 'val2' |} - 方案2:封装通用收窄工具函数
如果你不需要属性只读标记,可以自定义工具函数实现类型收窄:function asConst<T>(val: T): T { return val; } const realyConstObj = asConst({key1: 'val1', key2: 'val2'}) // 推导类型:{| key1: 'val1', key2: 'val2' |}
内容的提问来源于stack exchange,提问作者Eliav Louski
相关产品推荐
相关产品推荐

