Typecript에서 'padStart' 속성이 'string' 형식에 존재하지 않는다고 알려준다. 왜?
크롬 개발 도구를 입력하는 경우:
"1".padStart(2,0)
알겠다
"01"
하지만 내가 글을 쓸때
"1".padStart(2,0)
필자의 필적 프로젝트에서.
알겠다
Property 'padStart' does not exist on type 'string'.
Typecript는 왜 불평하는가?이 문제를 어떻게 해결하지?
padStart
에 정의되어 있다.ES2017
표준의당신은 형식에 대해 수용적 타이핑을 사용하도록 지시할 필요가 있다.ES2017
를 으로하여 이 할 수 . 목표를 다음과 같이 설정하여 이 작업을 수행할 수 있다.ES2017
런타임이 에 필요한 모든 언어 기능을 지원하는 경우ES2017
(그것은 아마 집필 당시에는 해당되지 않을 것이다.)
은 또다 은은만 하는 이다.libs
다음에 따라 런타임 객체에 대한 타이핑을 가져오는 옵션ES2017
하지만 여전히 당신이 목표로 하는 언어 버전으로 압축한다.(런타임 자체는 지원해야 함)padStart
는 어떤 것이다 활자는 어도 하다.
넌 할 수 있어tsconfig
을 이용하여lib
옵션:
"compilerOptions": {
"target": "es2016",
"lib": [
"es2017",
"dom"
"scripthost"
],
// ...
}
이 답변에서 lib vs target에 대한 자세한 내용을 읽어 보십시오.
TypeScript에서 String.prototype.padStart()를 인식하도록 하려면es2017
당신의 도서관 목록에.tsconfig.json
할 수 할 것이다. 이 도 있다 만약 그렇게 한다면, TypeScript는 모든 ES2017 기능을 사용할 수 있다고 가정할 것이며, 이는 당신이 원하는 것과 다를 수 있다.
Node.js와 같은 플랫폼은 항상 새로운 ECMAScript 언어 사양의 전체 기능 세트를 구현하지는 않으므로, 언어 기능이 존재한다고 확신하는 곳에 언어 기능만 추가하는 것이 더 안전하다.어떤 기능이 대상 플랫폼에서 지원되는지 잘 모를 경우 node.green 또는 MDNs 브라우저 호환성 목록과 같은 페이지에서 해당 기능을 찾아볼 수 있다.
그padStart
함수는 String 프로토타입의 일부분이므로 추가하기만 하면 된다.es2017.string
당신 안에tsconfig.json
:
{
"compilerOptions": {
"lib": ["es6", "es2017.string"],
...
},
}
TypeScript는 기본적으로 당신의 transpiled 코드가 가능한 최악의 환경에서 실행될 것이라고 가정한다. 즉, ES5만 지원하는 브라우저에서 말이다.String.prototype.padStart
ES2017에서만 지원되는 실험 기능이기 때문에, TypeScript는 런타임에 여기에서 준비가 될 것이라고 확신할 수 없다.
이 "최악의 사례"가 나타나지 않을 것을 알고 있다면(오래된 브라우저를 대상으로 하지 않거나 폴리필드를 사용하고 있지 않다), 다음과 같은 변경 사항 중 하나를 취할 수 있다.tsconfig.json
:
전송 대상을 변경하십시오.따라서 소비자는 ES2017(또는 그 이상) 런타임을 갖도록 강제하지만, 더 이상의 노력이 필요하지 않다.이 경우, 설정
target: "es2017"
.사용 가능한 라이브러리 목록을 변경하십시오.이 경우 고객이 충분히 현대적일 것이라고 확신할 수 없다면, 당신이 사용하고 있는 ES2017 요소에 맞는 폴리필을 제공해야 한다.이 경우, 추가
"es2017"
의 정렬까지.lib
매개 변수(비어 있었다면, 그러면lib: ["es2017"]
).
'IT이야기' 카테고리의 다른 글
ASP.NET Core 2.0 레이저 대 각도/반사/기타 (0) | 2022.03.14 |
---|---|
기능에 전달된 스타일 속성 유형 (0) | 2022.03.14 |
반응 - 무거운 하위 구성 요소 렌더링 지연 (0) | 2022.03.13 |
여러 경로를 반응 라우터 v4와 일치 (0) | 2022.03.13 |
다른 Python 스크립트에서 Python 스크립트 실행, 인수 전달 (0) | 2022.03.13 |