타이프 스크립트를 사용해야합니까? 아니면 그냥 ES6을 사용할 수 있습니까? [닫은]


286

내 일상은 AngularJS를 사용하는 클라이언트 개발자입니다. TypeScript를 사용하고 싶은지 평가하고 있습니다. 나는 typescript에 대해 약간의 연구를 수행했으며 필요한 거의 모든 JavaScript 패키지에는 정의 유형 파일이 있어야합니다. 특히 새로운 것을 시도하고 싶지만 정의가없는 경우에는 매우 편리하지 않습니다. 정말 실망 스럽습니다. (현재 jQuery 정의에서도 typescript 1.5 베타를 사용하려는 경우 몇 가지 문제가 발생합니다). ES6을 살펴보기 시작했으며 TypeScript와 비슷합니다. 대신 ES6를 사용해야합니까? 또한 각도 2가 TypeScript를 완벽하게 지원한다고 들었습니다.


11
새로운 것을 위해 매번 정의 파일이 필요하지 않습니다. 유형이없는 라이브러리 declare var MyNewLibraryName: any;를 사용하려면 컴파일러가 불평하지 않고 원하는대로 작성 하고 사용할 수 있습니다 .
David Sherret 2016 년

2
이 질문에 대한 투표로, 의견이 아닌 정보를 요구하는 가장 좋은 방법을 묻는 것이 아니라 각 접근법과 관련된 찬반 양론을 더 많이 요구하는 것이 좋습니다.
브로코

typescript는 모든 주요 브라우저 전에 javascript 새 버전 기능을 업데이트합니다. 내 옵션은 typescript를 사용하고 대상 브라우저를 기반으로 javascript 버전으로 컴파일하는 것입니다. (물론 자바 스크립트를 한 버전에서 다른 버전으로 쉽게 변환 할 수 있음)
bhv

코드를 올바르게 보푸라기가 걱정하지 않고 Immutable.js를 사용하기가 정말로 어렵고 상용구 작성을 좋아하고 DRY가 과대 평가되어 실제로 자신을 반복하는 것을 선호하는 경우 다른 사람의 코드에 대한 유형 정의 작성을 즐기십시오. 유형이 변경 될 때마다 유형을 관리하는 것이 좋으며 제대로 작동하는 것이 없기 때문에 두 개의 다른 텍스트 편집기간에 전환하는 것을 좋아합니다. 그런 다음 유형 스크립트를 선택하십시오. 그러나 제정신이라면 ES6 / 7과 Babel을 선택하십시오.
gargantuan

답변:


114

나는 현재 앵귤러 프로젝트에서 약 1 년 반 동안 Typescript를 사용 해 왔으며 지금은 정의에 몇 가지 문제가 있지만 DefinitelyTyped 프로젝트는 가장 인기있는 라이브러리의 최신 버전을 유지하는 데 놀라운 일을합니다.

바닐라 자바 ​​스크립트에서 TS로 전환 할 때 명확한 학습 곡선이 있다고 말하면서 여러분과 팀이 그러한 전환을 수행 할 수있는 능력을 고려해야합니다. 또한 angular 1.x를 사용하려는 경우 온라인에서 볼 수있는 대부분의 예제는 JS에서 TS로 변환해야하며 전반적으로 TS와 angular 1.x를 함께 사용하는 데 많은 리소스가 없습니다. .

각도 2를 사용할 계획이라면 TS를 사용하는 많은 예가 있으며 팀은 TS에서 대부분의 문서를 계속 제공 할 것이라고 생각하지만 각도 2를 사용하기 위해 TS를 반드시 사용할 필요는 없습니다.

ES6에는 몇 가지 멋진 기능이 있으며 개인적으로 친숙해질 계획이지만 현재로서는 프로덕션 준비 언어로 생각하지 않습니다. 주로 현재 브라우저의 지원이 부족하기 때문입니다. 물론 ES6로 코드를 작성하고 트랜스 파일러를 사용하여 ES5로 가져올 수 있습니다. 지금 당장 인기있는 것으로 보입니다.

전반적으로 나는 당신과 당신의 팀이 편안하게 배우는 것에 대한 답을 얻을 것이라고 생각합니다. 개인적으로 TS와 ES6 모두 좋은 지원과 장래의 미래를 가질 것이라고 생각합니다. 언어 기능을 더 빨리 얻고 경향이 있기 때문에 툴링 지원 (제 생각에)이 조금 더 좋습니다.


40
ES6는 브라우저를 지원하지 않습니다 ?? 당신은 일부 MS 정치인입니까? typescript와 ES6 모두 트랜스 파일러가 필요합니다. 웹에서 TS 또는 ES6을 실행하지 않고 Babel과 같은 것을 사용한다는 의미입니다. TS와 Angular 2는 Google과 MS와의 정치적 제휴를 위해 추가되었습니다
STEEL

40
@STEEL ES6 지원이 매우 제한적인 1 년 전 남은 답변에 MS 정치인이 아닙니다. 그리고 당신은 TS와 Angular 2의 결정이 정치적이라고 생각할 수는 있지만 그 언어를 위해 쓰여졌으며 Angular2 팀이 그 사용을 장려하고 있다는 나의 요지는 바뀌지 않습니다.
Kent Cooper

18
이것은 2 년 전의 것이지만, 시간이 지남에 따라 표준이 어떻게 널리 퍼져 있는지 보여주었습니다. ES6는 오늘날 대부분의 브라우저에서 기본적으로 크게 지원됩니다. 클래스, 화살표 함수 등 결국에는 브라우저가 트랜스 필러를 불필요하게 만들기에 충분한 버전의 자바 스크립트를 기본적으로 지원하는 시점에 도달하게됩니다. 타이프 스크립트에는 항상 트랜스 파일러가 필요합니다. 이것이 왜 중요한가? 웹 개발자가 웹을 발전시키는 것이 우리의 의무이기 때문에 표준을 지원하는 것입니다.
monzonj

3
ES6은 실제 "컴파일 타임"타입 안전을 지원하지 않습니다. ES6에는 많은 훌륭한 것들이 있지만 "이 인수는 문자열 (또는 클래스 X의 인스턴스)입니다, 젠장"이라고 말할 수 없으며 빌드 프로세스의 일부로 검증 된 것을 여전히 가질 수 없다는 사실 큰 프로그램 (프론트 엔드 및 백 엔드 모두).
Brad Peabody

흐름 유형 과 같은 도구를 사용하여 원하는 경우 ES6에 유형 지원을 추가 할 수 있습니다 . ES6이 모든 브라우저에서 편 재화 될 때까지 툴체인은 Flow-> ES6-> Babel로 구성되어 있지만 많은 간접적이지만 작업을 수행하며 현재 매우 인기있는 체인이라고 생각합니다.
Prahlad Yeri

660

ES5, ES6 및 TypeScript 사이의 의사 결정 트리

빌드 단계를 수행 하시겠습니까?

  • -ES5 사용
  • 아니요-계속 진행

유형을 사용 하시겠습니까?

  • -TypeScript 사용
  • 아니요 -ES6 사용

자세한 내용은

ES5 는 오늘날 브라우저에서 알고 사용하는 JavaScript이며 오늘날의 브라우저에서 실행될 무언가로 변환하는 빌드 단계가 필요하지 않습니다.

ES6 ( ES2015 라고도 함 )은 다음 JavaScript 반복이지만 오늘날의 브라우저에서는 실행되지 않습니다. 브라우저에서 실행하기 위해 ES5를 내보낼 수있는 트랜스 파일러가 많이 있습니다. 여전히 동적 (읽기 : 형식화되지 않은) 언어입니다.

TypeScript 는 선택적 JavaScript를 제공하면서 향후 버전의 JavaScript (ES6 및 ES7)에서 기능을 가져옵니다.

참고 : 많은 트랜스 파일러 (예 : babel, TypeScript)를 사용하면 오늘날의 JavaScript 버전에서 현재 기능을 사용할 수 있으며 오늘날 브라우저에서 계속 실행될 코드를 내보낼 수 있습니다.


5
그렇게 간단하지 않습니다. 다른 많은 요소가 있습니다.
RaoulRubin

16
@RaoulRubin 사실, 다른 많은 요소가 있지만 여기서는 닫힌 질문에 대해 최소한 의사 결정 프로세스를위한 출발점을 제공합니다.
Brocco

1
PS-ES6 + FlowType = 사랑 :)
Red2678

3
@RavinderPayal에는 흥미로운 질문이 있습니다. 브로코. 시장의 관점에서 무엇 이며 그 라인을 따라 ES5 또는 ES6 물건 대 TS의 값은?
J.Wells

3
좋아,이 게시물은 몇 살입니다. 2017 년 9 월 28 일 오늘로 넘어갑니다. 대부분의 브라우저는 ES6를 지원합니까?
듀이 은행
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.