作为一名习惯于严格类型语言的嵌入式软件工程师,在用 JavaScript 编写实验性实用程序时,我不得不使用 Flow ( https://flow.org )。
用 JS+Flow 编写代码大约 10 分钟后,Flow('flow-bin' 二进制文件)给了我以下错误:
无法调用 string.trim().replaceAll,因为字符串 [1] 中缺少属性 replaceAll(您的意思是替换吗?)。
关于以下(流注释)代码:
static sanitizeString(string : string) : string {
return string.trim().replaceAll(/(?:\s+|\.+)/g, "");
}
Flow 告诉我它在(似乎是一个)“符号”定义文件中找不到(相当广泛实现的)string.prototype.replaceAll(...)函数: tmp/flow/flowlib_1fa18dde633e97c7_501/core.js
这引出了一个问题:
在使用由 ECMAScript 标准定义的(广泛实施的)方法时, Flow 用户是否完全受预置定义文件的支配(或者考虑到浏览器实施 ECMAScript 的快节奏性质,或就此提出的提案/草案)?
我是否必须修改定义文件 (core.js) 才能解决此问题?