tsconfig.json의 대상은 무엇입니까?


92

targetin tsconfig.json은 무엇 을 의미합니까?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}

답변:


106

저는 Typescript를 처음 사용합니다. tsconfig.json의 Target은 무엇을 의미합니까?

target지정된 TypeScript에서 내 보내야하는 JavaScript 대상을 나타냅니다 . 예 :

target:es5

()=>null될 것입니다 function(){return null}ES5이 기능을 화살표 필요가 없기 때문에.

target:es6

()=>null될 것입니다 ()=>nullES6는 화살표 기능을 가지고있다.


5
es5를 대상으로하는 경우 여전히 babel이 필요합니까? typescript 코드에 async가 포함되어 있고 대기중인 경우에도 대상을 es5로 제공하면 컴파일됩니까?
Ankit Raonka 2017

4
그 🌹에 대한 바벨 필요가 없습니다
basarat

내가 사용하고 es5있었지만 . 가없는 배열과 같은 객체에 대해 중단되는 [...arr].map으로 해석 됩니다 . es6를 대상으로하면 브라우저에서 작동하기 시작하지만 모든 사람에게 작동합니까? arr.slice().mapslice
Qwerty

@Qwerty 아니요, 그렇지 않습니다. 예를 들어, Internet Explorer 11에서는 es6를 지원하지 않고 .map 기능이 없기 때문에 작동하지 않습니다. es5를 대상으로하는 경우에도 Internet Explorer에서 작동하지 않습니다. 왜냐하면 polyfill을 추가하는 것은 트랜스 파일러의 작업이 아니기 때문입니다. 비 es6 브라우저를 지원하려면 여전히 polyfill을 추가해야합니다.
pabrams

@pabrams 그래서 IE11은 ES5를 모두 지원하지 않습니까?
Qwerty

10

Target은 컴파일중인 JavaScript 버전을 변경합니다.

옵션은 https://www.typescriptlang.org/docs/handbook/compiler-options.html 에서 사용할 수 있습니다.

타겟 플래그가 내 코드를 어떻게 변경하는지 더 잘 이해하려는 정신으로, 차이점을 더 잘 이해하기 위해 일부 테스트 코드를 각 버전으로 컴파일했습니다.

https://github.com/aizatto/typescript-playground/tree/master/dist/test-async-main

또한 내가보고있는 환경에 따라 무엇을 목표로해야하는지 기록하고 있습니다.

https://www.aizatto.com/notes/typescript

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.