我想在 typescript 和Angular 10中使用replaceAll
。
但我得到这个错误:* * 类型"string"上不存在属性"replaceAll"**。
这是我的代码:
let date="1399/06/08"
console.log(date.replaceAll('/', '_'))
输出:13990608
怎样才能把我的 typescript 修改成显示这个功能?
我想在 typescript 和Angular 10中使用replaceAll
。
但我得到这个错误:* * 类型"string"上不存在属性"replaceAll"**。
这是我的代码:
let date="1399/06/08"
console.log(date.replaceAll('/', '_'))
输出:13990608
怎样才能把我的 typescript 修改成显示这个功能?
9条答案
按热度按时间ff29svar1#
你应该可以通过你的
tsconfig.json
添加这些类型。在compilerOptions
中添加"ES2021.String"
到lib
。您的tsconfig应该如下所示:
replaceAll
方法在lib.es2021.string.d.ts
中定义如下:jgovgodb2#
你可以使用RegExp和global flag来解决这个问题。global flag是让
replace
在所有情况下运行的标志。juzqafwq3#
从docs:
截至2020年8月,
replaceAll()
方法在Firefox中得到支持,但在Chrome 85中不支持。同时,您可以找到多个其他方法here。
供未来读者参考的截图:
q35jwt9p4#
仅使用此功能
3z6pesqy5#
您可以创建文件
myOwnTypes.d.ts
在Angular 项目的根目录下,添加以下代码:
这将告诉typescript字符串具有这个属性。
现在Chrome和Firefox支持replaceAll,但是检查一下caniuse是否符合你的需要总是很好的。
https://caniuse.com/?search=replaceAll
如果这对你有效,upvotes是非常受欢迎的,我从这个stackoverflow帐户开始,并将感谢支持:)
h9vpoimq6#
Chrome支持replaceAll,所以使用起来很安全。但是typescript仍然会发出错误,所以你可以将你的字符串强制转换为any,以克服这个障碍。
kjthegm67#
这是因为TypeScript不能识别比当前JavaScript版本更新的方法。
String.replaceAll()
定义为ES2021。您必须将
lib
添加到tsconfig.json
文件的compilerOptions
中。lib
的值必须为:["ES2021"]
,或者具体地说,字符串类型为["ES2021.String"]
。在
tsconfig.json
文件中添加以下内容:2nc8po8w8#
根据MDN网络文档
要执行全局搜索和替换,请在正则表达式中包含
g
开关。因此,您可以尝试:
这会自动用下划线替换所有的正斜杠。确保在正则表达式的末尾保留
/g
全局指示符,因为它允许JS知道你想替换所有出现正斜杠的地方。有关使用正则表达式指示符的更多信息,请参考以下非常有用的指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
jm81lzqq9#
如果有人仍然有这个问题,请将其添加到您的tsconfig.json