React Native TypeScript 구성이 5년 된 표준(lib: es2017)을 사용하도록 권장하는 이유는 무엇입니까?
4457 단어 typescripthermesiosreactnative
tsconfig.json
에서 이상한 점을 언급했습니까?"lib": ["es2017"]
lib 옵션이 이상해 보입니다. 기본적으로 5년 된 표준이 권장되지 않습니까?일부 현대적인 방법을 사용하려는 경우:
[].flat(...)
[].flatMap(...)
Object.fromEntries({ })
'str'.trimEnd()
... Typescript는 다음과 같이 정중하게 오류를 표시합니다.
Object.fromEntries(...)
// ^^^^^^^^^^ TS2550: Property 'fromEntries' does not exist on type 'ObjectConstructor'.
// Do you need to change your target library?
// Try changing the 'lib' compiler option to 'es2019' or later.
그러나 시뮬레이터 iOS 및 Android에서 이 코드를 실행하면 런타임 오류가 발생하지 않습니다.
그렇다면 문서가 구식이라는 의미입니까?
실제로 아니요, 모든 것은 코드를 실행할 JavaScript 엔진에 달려 있습니다.
기본적으로 React Native 사용:
jsc-android
Note: Also, include some polyfills for many standard functions
P.S. For me, that was a surprised that
Promise
is polyfilled too :(
예를 들어
Array.prototype.flat()
을 사용하려고 하면 iOS 11
를 사용하는 사용자에게 앱이 충돌합니다. 예, 이 한 가지 이유es2017
그리고 iOS 11은 React Native에서 지원하는 최소 버전입니다(
0.68.x
까지)but starting from React Native
0.69.0
iOS12.4
is minimal supported version (thanks Meta!)
JavaScript 최신 기능 및 이를 지원하는 엔진에 대한 정보를 찾을 필요가 없다는 것이 좋습니다.
이제 Typescript lib 옵션\JS 기능과 JS 엔진을 비교하기가 더 쉬워졌습니다.
어쨌든 Meta는 또한 모든 새로운 EcmaScript 사양을 맞추려고 시도한 자체Javascript Engine Hermes를 개발하고 있습니다.
또한 V8 JavaScript 엔진을 사용할 수 있습니다.
react-native-v8
은 모든 최신 JS 기능을 가장 많이 지원합니다.올바른 lib 옵션을 사용하는 경우 모든 JavaScript 엔진compatibility table을 비교하고 tsconfig를 확인할 수 있습니다!
유용한 링크 링크:
react-native-v8
jsc-android
Commit 최소 iOS 버전이 충돌한 곳
Reference
이 문제에 관하여(React Native TypeScript 구성이 5년 된 표준(lib: es2017)을 사용하도록 권장하는 이유는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/retyui/why-react-native-typescript-config-recommends-to-use-a-five-years-old-standard-lib-es2017-3bjk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)