问题描述
我想在打字稿和10号角文字中使用replaceAll
,但出现此错误类型'string'上不存在属性'replaceAll'
我的代码是这样的
let date="1399/06/08"
console.log(date.replaceAll('/','_'))
输出:13990608
如何修复我的打字稿以向我展示此功能?
解决方法
您应该能够通过您的 tsconfig.json
添加这些类型。
将 "ESNext.String"
添加到 lib
内的 compilerOptions
。
您的 tsconfig 应该如下所示:
{
...,"compilerOptions": {
...,"lib": [
...,"ESNext.String"
]
}
}
replaceAll
方法在 lib.esnext.string.d.ts
中定义如下:
interface String {
/**
* Replace all instances of a substring in a string,using a regular expression or search string.
* @param searchValue A string to search for.
* @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
*/
replaceAll(searchValue: string | RegExp,replaceValue: string): string;
/**
* Replace all instances of a substring in a string,using a regular expression or search string.
* @param searchValue A string to search for.
* @param replacer A function that returns the replacement text.
*/
replaceAll(searchValue: string | RegExp,replacer: (substring: string,...args: any[]) => string): string;
}
,
您可以使用RegExp和全局标志来解决问题
"1399/06/08".replace(/\//g,"_") // "1399_06_08"
,
来自docs:
截至2020年8月,Firefox支持
replaceAll()
方法,但 不是通过Chrome。在Chrome 85中将可用。
与此同时,您可以找到其他多种方法here。
可能的未来读者的截图:
,您可以创建一个文件
myOwnTypes.d.ts
在你的 angular 项目的根目录添加以下代码:
interface String {
replaceAll(input: string,output : string): any;
}
这将告诉打字稿字符串具有此属性。
现在 replaceAll 在 Chrome 和 Firefox 中受支持,但检查 caniuse 以检查它是否满足您的需求总是好的。
https://caniuse.com/?search=replaceAll
如果这对您有用的话,我非常欢迎您点赞,我从这个 stackoverflow 帐户开始,并感谢您的支持:)
,只需使用此功能
let date="1399/06/08"
console.log(date.split('/').join('_'))
,
Chrome支持replaceAll,因此可以安全使用。但是打字稿仍然会产生错误,因此您可以将字符串强制转换为任意字符串,以克服该障碍。
The word reindeer occurs 2 times in the string ierndeBeCrerindAeer.
The left over word is BCA
谢谢曼苏纠正我。
,根据 MDN 网络文档,
" 要执行全局搜索和替换,请在 正则表达式”。
所以,你可以尝试这样做:
g
这会自动用下划线替换所有正斜杠。确保还在正则表达式的末尾保留 const date="1399/06/08"
const forwardSlashRegex = /(\/)/g;
console.log(date.replace(forwardSlashRegex,'_'));
全局指示符,因为它允许 JS 知道您要替换所有出现正斜杠的位置。
有关使用正则表达式指标的更多信息,请参阅以下非常有用的指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions