2017-03-09 2 views
0

에서 자바 스크립트 작업 나는 동적으로 작성하고 내 응용 프로그램 내 자원 (번역 문자열)를 포함하는 자바 스크립트 객체를 가지고있다. 다음과 같습니다 :타이프

var ResourceManager = (function() { 
    function ResourceManager() { 
     var currentLanguage = $('#activeLanguage').html(); 
     this.resources = { 
      get Aanmelden() { 
       switch (currentLanguage) { 
       case "en-GB": 
        return "Register"; 
       case "nl-NL": 
        return "Aanmelden"; 
       default: 
        return "Aanmelden"; 
       } 
      }, 
      get AlgemeenOpslaan() { 
       switch (currentLanguage) { 
        case "en-GB": 
         return "Save"; 
        case "nl-NL": 
         return "Opslaan"; 
        default: 
         return "Opslaan"; 
       } 
      } 
     }; 

    } 
    return ResourceManager; 
}()); 

깔끔한 것은이 방법은 그냥 MVC에서 제공하는 기능처럼, 내 번역을 찾을 IntelliSense를 사용할 수 있다는 것입니다. 타이프 스크립트로 작업 할 때 동일한 기능을 제공 할 수있는 방법이 있습니까? 여기에서 가장 큰 문제는 다음과 같습니다.

그러나이 클래스의 메서드에는 인텔리 센스가 적용되지 않습니다. 왜냐하면 내가 typescript 파일을 동적으로 만들면 자바 스크립트 파일을 자동으로 컴파일하지 않아서 클라이언트에 보내려고하지 않기 때문에 자바 스크립트를 사용하고 typescript btw를 사용하지 않는 이유가 있습니다.

사람 대신 자바 스크립트, 또는 내 다른 타이프 파일은 자바 스크립트 객체 위에 인텔리과 함께 작업 할 수의 타이프 리소스 파일을 통해이 문제를 해결할 수있는 방법 중 하나를 알고 있나요?

답변

1

코드 예제 코드

나는 무엇이 필요한지 확실하지 않습니다. 아마 이런 종류의 코드일까요?

class ResourceManager { 
    private currentLanguage: string; 
    constructor() { 
     this.currentLanguage = $('#activeLanguage').html(); 
    } 
    public resources = { 
     get Aanmelden() { 
      switch (this.currentLanguage) { 
       case "en-GB": 
        return "Register"; 
       case "nl-NL": 
       default: 
        return "Aanmelden"; 
      } 
     }, 
     get AlgemeenOpslaan() { 
      switch (this.currentLanguage) { 
       case "en-GB": 
        return "Save"; 
       case "nl-NL": 
       default: 
        return "Opslaan"; 
      } 
     } 
    } 
} 

알림 : call the TypeScript compiler programmatically 수 있습니다.

하거나 또한 별도의 파일에 출력 우아한 용액 선언 데이터 (코드)은 기존 객체

interface Resources { 
    readonly Aanmelden: string 
    readonly AlgemeenOpslaan: string 
} 

declare class ResourceManager { 
    resources: Resources 
} 

대한 선언. 다음과 같이 할 수 있습니다.

  1. Resources 인터페이스에 대한 TypeScript 정의를 생성하십시오.
  2. JSON 형식으로 데이터를 생성하십시오. 동적 JSON 데이터로부터, Object.defineProperties으로 resources 속성 빌드
  3. 추 기형 (TS?의 도움과 함께)는 JS 번호.

또한 빌드 프로세스의 종류는 게시하고 npm 패키지로 사용할 수 있습니다.

+0

은 참으로 나에게 인텔리을 제공 않습니다,하지만 지금은 새로운 자원이 추가됩니다 때마다 나뿐만 아니라 인터페이스에 속성을 추가해야합니다. 그것은 어리석은 소리지만, TS 파일과 js 파일을 만들 수 있습니다. Intellisense 용 TS 파일과 js 파일을 사용하여 클라이언트에게 보냅니다. 문제는 내가 나의 요청에 JS 포함되도록 프로그래밍을 타이프 스크립트 파일을 작성하고 컴파일하는 것 수 없다는 것을 참고. – Kai

+0

@Kai의 NB : 당신은 [타이프 스크립트 컴파일러를 호출 프로그래밍] 수 (https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function). 나는 대답에 링크를 추가하기 위해 편집했다. – Paleo