2016-07-01 6 views
0

현재 기존 JavaScript 응용 프로그램을 TypeScript로 변환하려고합니다. 단계별로이 작업을 수행 할 수 있도록 컴파일러 옵션 "allowJs"를 사용하여 기존 JavaScript 코드를 컴파일하는 것으로 시작했습니다. 기존 파일을 TypeScript로 변환하기 시작하면 네임 스페이스를 만들 때 오류가 발생합니다.프로젝트를 Typescript로 변환 할 때 "식별자 중복"오류가 발생했습니다.

그래서 기본적인 예입니다.

namespace myapp { 
    export var c1 = 5; 
} 

그리고 오래된 자바 스크립트 파일 :

var myapp = myapp || {}; 
myapp.c2 = 4; 

이 유효한 자바 스크립트 출력에 이르게하지만, 오류가있을 것입니다 :

error TS2300: Duplicate identifier 'myapp'. 
나는이 두 파일, 새로운 타이프 라이터 파일이

이 오류가 발생하거나 동일한 네임 스페이스를 사용하는 파일을 변환하는 다른 방법을 피할 수있는 방법이 있습니까?

내 tsconfig.json : 당신의 tsconfig.json 중 하나를 제공한다 "파일"의

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    } 
} 
+0

더 나은 방법은 typescript로 .ts 파일을 변환 한 다음 webpack과 같은 도구를 사용하여 생성되고 구현 된 모든 파일로 응용 프로그램을 만들 수 있습니다. – iberbeu

+0

번들링은 현재 또는 나중에 문제가 될 수 없습니다. 시각. 지금은 모든 스크립트 파일을 개별적으로 포함하기 만합니다.하지만 나중에 확실히 살펴볼 내용입니다. 하지만 지금은 더 많은 컴파일 시간 문제입니다. – TSS

답변

0

또는 "제외"필드에 포함하거나 각각 파일을 제외합니다.

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    }, 
    "files" : ["/path/to/ts/file.ts", ...] 

} 

또는

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "outDir": "dist" 
    }, 
    "exclude" : ["node_modules", "/path/to/build/js/"] 

} 

이 문제에 대한 이유는 타이프 라이터 컴파일러는 따라서 두 번 같은 참조를 받고, 원래 (타이프 라이터) 소스 파일과 transpiled (자바 스크립트) 파일을 모두 알고있다. 이제는 소스 타이프 스크립트 파일 만 포함 시키거나 모든 비 타이프 스크립트 파일을 제외시키는 것입니다.

+0

이상적으로 변환하는 동안 이전 JS 파일과 새 TS 파일을 모두 컴파일 할 수 있기를 원하지만 모든 것이 변환 될 때까지 솔루션이 될 수 있습니다. – TSS

+0

js와 ts를 모두 허용하려면 ts 파일에서 자동으로 생성 된 js 파일을 제외하십시오. – Lekhnath

+0

이것들은 문제가되어서는 안되며, TypeScript가 무시할 것 같았습니다. TypeScript가 JavaScript 및 TypeScript 파일에 걸쳐있는 중복 정의에 비해 너무 엄격하다는 것은 실제로 문제입니다. TypeScript는 과 같은 형식을 생성하므로 var myapp; ... var myapp; 도 마찬가지입니다. – TSS

관련 문제