'string' 유형에 'replaceAll' 속성이 없습니다.
사용하고 싶다replaceAll
활자체와 각도 10으로 표시됩니다.
그러나 "string" 유형에는 "replaceAll" 속성이 없습니다.
코드는 다음과 같습니다.
let date="1399/06/08"
console.log(date.replaceAll('/', '_'))
출력: 13990608
이 기능을 표시하도록 타이프 스크립트를 수정하려면 어떻게 해야 합니까?
이러한 오타를 추가할 수 있어야 합니다.tsconfig.json
.더하다"ES2021.String"
로.lib
안에서.compilerOptions
.
다음으로 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 및 글로벌 플래그를 사용하여 문제를 해결할 수 있습니다.글로벌 플래그를 통해replace
모든 경우에 실행되다
"1399/06/08".replace(/\//g, "_") // "1399_06_08"
문서에서:
2020년 8월 현재
replaceAll()
메서드는 Firefox에서 지원되지만 Chrome에서는 지원되지 않습니다.그것은 크롬 85에서 사용할 수 있게 될 것이다.
한편, 여기서 다른 여러 가지 방법을 찾을 수 있습니다.
미래의 독자를 위한 스크린샷:
그냥 이 기능을 사용하세요.
let date="1399/06/08"
console.log(date.split('/').join('_'))
파일을 생성할 수 있습니다.
myOwnTypes.d.ts
각도 프로젝트의 루트에 다음 코드를 추가합니다.
interface String {
replaceAll(input: string, output : string): any;
}
그러면 문자열이 이 속성을 가지고 있음을 타이프스크립트에 알 수 있습니다.
이제 replaceAll은 Chrome 및 Firefox에서 지원되지만 사용자의 요구에 맞는지 확인하기 위해 항상 캐니유스를 확인하는 것이 좋습니다.
https://caniuse.com/?search=replaceAll
이 방법으로 업보트가 유효한 경우, 이 stackoverflow 어카운트부터 시작해 주시면 감사하겠습니다.
이는 TypeScript가 현재 JavaScript 버전보다 새로운 메서드를 인식하지 못하기 때문입니다. String.replaceAll()
정의되어 있습니다.
를 추가해야 합니다.lib
에compilerOptions
,에서tsconfig.json
파일.
가치lib
다음 중 하나여야 합니다.["ES2021"]
, 또는 구체적으로 문자열 입력["ES2021.String"]
.
에 다음 추가tsconfig.json
파일:
{
...
"compilerOptions": {
"lib": ["ES2021"]
...
}
Chrome은 replaceAll을 지원하므로 안심하고 사용할 수 있습니다.그러나 타이프스크립트는 여전히 오류를 발생시키므로 이 장애를 극복하기 위해 임의의 문자열을 입력할 수 있습니다.
const date: any ="1399/06/08"
console.log(date.replaceAll('/','_'))
MDN Web Docs에 따르면
"글로벌 검색을 수행하고 대체하려면
g
switch in regular expression."을 클릭합니다.
따라서 다음을 수행할 수 있습니다.
const date="1399/06/08"
const forwardSlashRegex = /(\/)/g;
console.log(date.replace(forwardSlashRegex, '_'));
그러면 모든 슬래시가 자동으로 언더스코어로 대체됩니다.그리고 꼭 보관해 주세요./g
정규식 끝의 글로벌인디케이터를 사용하면 JS는 순슬래시가 발생하는 모든 장소를 치환할 것을 알 수 있습니다.
regex 인디케이터의 사용 방법에 대한 자세한 내용은 다음 매우 유용한 가이드를 참조하십시오.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
이 문제가 해결되지 않는 경우는, 이것을 tsconfig.json 에 추가합니다.
{
...,
"compilerOptions": {
...,
"lib": [
...,
"esnext.string"
]
}
}
에서는 을, 을, 을, 을, 을, 을, 을, 을 .target
에 귀속시키다.compilerOptions
.
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021", // add this line to use ES2021
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"noUnusedLocals": false,
"paths": {
"@/*": ["src/*"],
"@auth/*": ["src/auth/*"],
"@aws/*": ["src/aws/*"],
"@common/*": ["src/common/*"],
"@conig/*": ["src/conig/*"],
"@schemas/*": ["src/schemas/*"],
}
}}
RegExp를 사용하여 모두 교체할 수 있는 간단한 대안입니다.
let subject = '1399/06/08';
let substring = '/';
let replacement = '_';
let newSubject = subject.replace(new RegExp(substring, 'g'), replacement);
console.log(newSubject);
서브스트링과 치환을 문자열 입력으로 하는 함수로 만들 수 있어 실용적입니다.
저의 활용 사례는 각도 "교체" 파이프를 만드는 것이었습니다.
언급URL : https://stackoverflow.com/questions/63616486/property-replaceall-does-not-exist-on-type-string
'programing' 카테고리의 다른 글
Angular가 자동으로 'ng-invalid' 클래스를 '필수' 필드에 추가하고 있습니다. (0) | 2023.04.06 |
---|---|
Gravity Forms - 현재 페이지 번호 가져오기 (0) | 2023.04.06 |
React를 사용하여 파일 구성 요소 업로드JS (0) | 2023.04.06 |
JavaScriptSerializer - 열거를 문자열로 JSON 직렬화 (0) | 2023.04.06 |
JQuery Post sends form data and not JSON (0) | 2023.04.06 |