2014-11-11 3 views
9

Typescript로 SystemJS를 작동 시키려고하지만 서로 충돌하는 것 같습니다.SystemJS 및 각도로 Typescript를 사용하는 방법?

Typescript의 키워드와 충돌하지 않고 System.js에서 자동 로딩을 어떻게 활용할 수 있습니까? 이 module.exports = ...export 변환 있지만 사용하여 가져 오기/필요는이를 위해 모든 가능한 아니면 내가해야이 import

에 대해 동일한 작업을 수행하지 않습니다, 그것은로드 및 파일을 참조하기위한 자신의 방법 사용 타이프 라이터한다 Typescript가 ES6 키워드를 지원할 때까지 기다리시겠습니까? (

tsc --module commonjs app.ts 

이 CommonJS 스타일의 모듈을 대상으로 타이프를 알려줍니다 : 컴파일 할 때

답변

6

타이프 1.5 컴파일에 대한 지원을 추가 dev에 ES5 SystemJS 모듈 구문에 적용됩니다.

저자와 같은 클래스 :

export class Foo {} 

그런 다음

tsc --module system foo.ts 

결과 컴파일은 SystemJS 형식을 사용하여 ES5 모듈 될 것입니다.

2

타이프 라이터에서는 다음 import 문을 작성합니다 ...

import dep = require('dep'); 

console.log(dep); 

, 당신은 모듈 플래그를 통과 필요한 경우 AMD를 대상으로 할 수도 있습니다. SystemJS는 두 가지 구문 스타일을 모두 지원합니다.

출력은 다음과 같다 :

var dep = require('dep'); 

console.log(dep); 

이 출력은 SystemJS documentation에서 다음 예와 유사하다.

// library resource 
var $ = require('jquery'); // -> /lib/jquery.js 

// format detected automatically 
console.log('loaded CommonJS'); 

더 많은 도움이 필요하면 질문을하고 문제를 설명하는 구체적인 예를 포함 시켜서보다 구체적인 조언을 제공 할 수 있습니다.

+0

글쎄, SystemJS는 ES6 구문과 트레이서를 사용합니다. 그 두 가지 사이에서 지금까지 발견 된 가장 큰 쇠고기입니다. Typescript에서 'something _'오류를 가져옵니다. Typescript가 ES5로 컴파일 된 이후로는 작동하지 않는 '고유'ES6 모듈을 사용할 수 없으며 SystemJS는 실패합니다. – pocesar

+0

ES6 지원은 TypeScript 로드맵 (예 : ES6 모드로 컴파일)에 있습니다. – Fenton

+0

"compile to es6"플래그는 구현 될 때마다 내가 찾고있는 것입니다. – iksose

0

here 내가 Typescript 대신에 traceur를 사용하는 방식을 볼 수 있지만, Typescript와 거의 동일하게 작동해야하며, 다시 그걸 재생할 수있는대로 TS를 추가합니다.

참고 : 스티브 SystemJs의 강점은 거의 모든 모듈 정의를 사용할 수 있다는 것입니다 언급 한 바와 같이, 로더 모듈 형식을 감지합니다

나는 자기 알림 또는 적절한 종자보다 놀이터 더 많이 개인적으로 나는 다른 언어 및 프레임 워크에서 생성자 주입 패턴처럼되고 그것을 발견

define([deps...],(deps..){ 
    // ... 
}) 

에로 모듈을 선언하는 것을 선호하고 자바 스크립트입니다 beacuse 항상 (클래스와 화살표 기능을 아름답게, 같은 자바 스크립트로 변환 + Typotcase 형식으로 anotated).

또한 분명히 비동기식 인 의도를 나타낸 amd를 선택하면 어쨌든 ES6 모듈 구문을 사용하도록 지정하면 종속성이로드를 완료했을 때만 가져 오기 문장이 실행됩니다. 거의 비동기 키워드 것처럼 BTW

을 시작한 비에 대해 너무 비밀 느낌 : 및 OutOFcontext : SystemJS의 놀라운 작업에 SA/JHB에서 건배 씨 베드 포드는

관련 문제