Flow中能否在内联类型声明中使用$ReadOnly工具类型?
Flow中$ReadOnly工具类型在私有原始类型属性上的使用问题
你遇到的报错核心原因:$ReadOnly工具类型仅支持对象、数组这类复合类型,string属于原始值类型,不符合它的参数要求,因此触发「not-an-object」错误。
针对你的场景,给出以下可行方案:
- 对于string这类原始类型的私有属性,完全不需要用$ReadOnly修饰:原始值本身不可变,且#开头的私有字段已经限制了外部无法访问,若不在类内部重新赋值该字段,它自然处于只读状态。
- 若需要在类型层面强制类内部也不能修改这个私有属性,可直接给私有字段添加
readonly修饰符(该语法无需额外转译,多数现代环境及Flow配置均支持):class Tmp { readonly #myreadonlystring /*:string*/ = "Some string"; } - 如果你受限于项目完全无法使用任何新语法,也可以通过类的实例类型注释间接约束,但这种方式不如
readonly直接直观。
内容的提问来源于stack exchange,提问作者Olle Härstedt
相关产品推荐
相关产品推荐

