我想在打字稿和角度 10 中使用 replaceAll
。
但我收到此错误:“字符串”类型上不存在属性“replaceAll”。
这是我的代码:
let date="1399/06/08"
console.log(date.replaceAll('/', '_'))
输出:13990608
如何修复我的打字稿以显示此功能?
date.split('/').join('_')
您现在可以使用它。虽然你可以更新到 chrome85。
您应该能够通过 tsconfig.json
添加这些类型。将 "ES2021.String"
添加到 compilerOptions
内的 lib
。
然后,您的 tsconfig 应如下所示:
{
...,
"compilerOptions": {
...,
"lib": [
...,
"ES2021.String"
]
}
}
replaceAll
方法在 lib.es2021.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 和 global flag 解决问题。全局标志是使 replace
在所有事件上运行的原因。
"1399/06/08".replace(/\//g, "_") // "1399_06_08"
String.replaceAll()
的兼容性,而不是解决方法的请求。
您可以创建一个文件
myOwnTypes.d.ts
在您的 Angular 项目的根目录下并添加以下代码:
接口字符串 { 替换所有(输入:字符串,输出:字符串):任何; }
这将告诉打字稿字符串具有此属性。
现在在 Chrome 和 Firefox 中都支持 replaceAll,但检查 caniuse 以检查它是否符合您的需求总是很好的。
https://caniuse.com/?search=replaceAll
如果这对您有用,那么欢迎投票,我从这个 stackoverflow 帐户开始,并感谢您的支持:)
只需使用此功能
让 date="1399/06/08" console.log(date.split('/').join('_'))
Chrome 支持 replaceAll,因此可以安全使用。但是打字稿仍然会发出错误,因此您可以将字符串转换为任何字符串,以克服该障碍。
const date: any ="1399/06/08"
console.log(date.replaceAll('/','_'))
any
根据 MDN 网络文档,
“要执行全局搜索和替换,请在正则表达式中包含 g 开关”。
所以,你可以尝试这样做:
const date="1399/06/08" const forwardSlashRegex = /(\/)/g; console.log(date.replace(forwardSlashRegex, '_'));
这会自动将所有正斜杠替换为下划线。确保还在正则表达式的末尾保留 /g
全局指示符,因为它允许 JS 知道您要替换所有出现正斜杠的位置。
有关使用正则表达式指标的更多信息,请参阅以下非常有用的指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
不定期副业成功案例分享
lib.esnext.string.d.ts
文件,函数在您的代码中声明,不确定“通过 tsconfig.json 添加这些类型”是什么意思,您能否详细说明tsconfig.json
中添加ESNext.String
到lib
。An unhandled exception occurred: tsconfig.json:21:7 - error TS6046: Argument for '--lib' option must be: 'es5', 'es6', 'es2015',...
带有一长串选项但它们都不是ESNext.String
并且它不会编译。