React Native TypeScript 구성이 5년 된 표준(lib: es2017)을 사용하도록 권장하는 이유는 무엇입니까?

using Typescript in React Native의 공식 가이드를 읽어 본 적이 있습니까? 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 사용:
  • iOS에서 빌드되는 JSC(JavaScriptCore)
  • 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 iOS 12.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를 확인할 수 있습니다!


    유용한 링크 링크:
  • 리액트 네이티브 Typescript Config
  • React Native 엔진용 ECMAScript 6compatibility table
  • react-native-v8
  • Hermes engine
  • jsc-android

  • Commit 최소 iOS 버전이 충돌한 곳
  • 좋은 웹페이지 즐겨찾기