2014-09-30 2 views
1

필자는 상대적으로 큰 프로젝트를 Typescript로 이식하는 것을 진지하게 고려하기에는 JavaScript의 변덕을 충분히 피곤합니다. 나는 자습서를 보았고 Typescript의 요지를 얻었지만 JavaScript에서 Typescript로 이동하는 "전"과 "후"의 몇 가지 예를 보면 정말 도움이 될 것이라고 고백합니다. 특히 인기있는 객체 정의 패턴 중 일부를 JS에서 잘못 작성했습니다. 내가 가지고있는 경우 예를 들어, JS 객체는 다음과 같이 선언 :Javascript 개체를 Typescript에 상응하는 변환 연습?

var app = app || {}; 

app.SomeSingleton = function() { 

var someProp; 

var someFunction = function(e) { 

}; 

var somePublicFunction = function(e) { 

}; 

return { 
    somePublicFunction: somePublicFunction 
} 

}(); 

도 날이 방법으로 재산과 방법으로 아마 레코딩 특성 I를 참조 돕는이를 입력 ... 그러나 (나에게) 이상한 js의 인라인 클래스 정의 물건은 여전히 ​​나를 던졌습니다. 위의 질문과 마찬가지로 TS로 변환 할 때 다음 스텁이 어떻게 보이나요?

var app = app || {}; 

app.MVVMThing = (function() { 
    "use strict"; 

    //model 
    var MVVMModel = (function() { 
     LoggerInstanceDeclaredElsewhere.log("blah"); 

     var mvvmModel = { 

      id: 'Id' 

     }; 

     var datasource = "blah"; 

     return { 
      model: mvvmDatasource 
     }; 
    }()); 

    // view model 
    var MVVMViewModel = (function() { 

     var init = function() { 

     }; 

     var show = function() { 

     }; 

     return { 
      init: init, 
      show: show,   
     }; 
    }()); 

    return MVVMViewModel; 
}()); 

JS에 클래스 정의와 인스턴스화의 많은 방언이 있지만 실제로는 TS에서이 작업을 수행하는 유일한 주된 방법이 있습니까?

TypeScript 팬이라면 누구도 찾을 수 없거나 자신의 응답을 제공 할 수없는 기사를 가리키고 있습니다.

감사합니다, 데이브 Gerding JS에서 클래스 정의 및 인스턴스의

답변

3

많은 방언은 대부분

TS

에서이 일을 정말 단 하나의 주요 방법이있다. 하지만 유효한 모든 JS는 유효한 TS이므로 여전히 모든 권한을 갖습니다.

모듈 여기서 뭐/네임 스페이스 패턴

:

var app = app || {}; 

app.SomeSingleton = function() { 
} 

이 모듈 패턴을 사용하고 있습니다. 다른 언어의 네임 스페이스와 유사합니다. SomeSingleton에 접두어 app을 첨부하고 있습니다.

module app{ 
    export function SomeSingleton(){} 
} 

생성 : 타이프에서

var app; 
(function (app) { 
    function SomeSingleton() { 
    } 
    app.SomeSingleton = SomeSingleton; 
})(app || (app = {})); 

그냥 더 원시 JS보다 santized.

(생성하는 객체에 대한) 모듈 패턴

귀하의 JS 공개 :

enter image description here

같은 :

var SomeClass = function() { 
    var someProp; 
    var someFunction = function(e) { }; 

    var somePublicFunction = function(e) { }; 

    return { 
     somePublicFunction: somePublicFunction 
    } 
}; 

인해 타이프 친 형 추론에 완벽하게 유효한 TS, 단지 더 형태 보증인가를 귀하의 싱글 톤, 좋은 타입 스크립트 :

var SomeSingleton = function() { 
    var someProp; 
    var someFunction = function(e) { }; 

    var somePublicFunction = function(e) { }; 

    return { 
     somePublicFunction: somePublicFunction 
    } 
}(); 

더 많은 것을 배우려면 google : https://www.google.com.au/search?q=revealing%20module%20pattern

관련 문제