2012-10-26 7 views
3

자바 스크립트를 TypeScript로 변환하려고 시도하고 있지만 typescript가 네임 스페이스를 지원하는지 여부는 알 수 없습니다. 다음과 같은 코드가 있습니다.Type.registerNamespace를 TypeScript로 변환하려면 어떻게해야합니까?

/// <reference name="MicrosoftAjax.js"/> 
Type.registerNamespace("MyNamespace.Controls.FloatingErrorPane"); 

MyNamespace.Controls.FloatingErrorPane = function (element) 
{ 
... 
} 
MyNamespace.Controls.FloatingErrorPane.prototype = 
{ 
... 
} 

마침표가 포함 된 타이프 스크립트에 네임 스페이스를 지정할 수 있는지 알고있는 사람이 있습니까? , this.ClientID) "

[assembly: WebResource("MyNamespace.FloatingErrorPane.js", "text/javascript")] 
ScriptControlDescriptor descriptor = new ScriptControlDescriptor("MyNamspace.Controls.Floating 

ErrorPane,

+0

'.prototype' 이후에 뭔가를 남겼습니까? 아니면 수퍼 클래스에서 상속하려고하십니까? (수퍼 클래스에서 상속 받기를 원한다면, @Sohnee가 말한 것을 할 것이고, 그냥 export 클래스를 추가한다. FloatingErrorPane extends YourSuperClassHere {'<- 추가 부분을 추가한다. –

답변

4

네임 스페이스 스타일의 구문을 얻기 위해 중첩 된 모듈과 클래스를 사용할 수 있습니다

이 첫 번째 : 우리는 같은 우리의 C# 클래스에서 그 같은 이름을 참조. 예 ... 당신의 문제의 예와 일치

module MyNamespace { 
    export module Controls { 
     export class FloatingErrorPane { 
      constructor(private element: HTMLElement) { 
      } 
     } 
    } 
} 

var errorPane = new MyNamespace.Controls.FloatingErrorPane(myElement); 

당신은, 그래서 두 번째 파일이 MyNamespace에 추가 할 수있는하려는 경우가 여러 파일 모듈을 선언 할 수 있습니다 다시 선언하여 ...

module MyNamespace { 
    export module Messaging { 
     export class MessageHandler { 

     } 
    } 
} 
+1

모듈을 중첩 할 필요가 없다. 지정하십시오 : 모듈 MyNamespace.Controls {...} – BSick7

+0

좋은 관찰 - 좋은 하나. – Fenton

0

네, 사용할 수 있습니다. 중첩 네임 스페이스를 만드는 표기법.

module MyNamespace.Controls { 
    export class FloatingErrorPane { 
     constructor(element: HTMLElement) { 
     } 
    } 
} 

var errorPane = new MyNamespace.Controls.FloatingErrorPane(myElement); 

또는 모듈을 연속적으로 선언하는 Sohnee의 구문을 사용할 수 있습니다. 그러나 이런 식으로 직접 클래스 나 함수를 정의 할 수는 없습니다. 따라서 유효하지 않습니다 :

MyNamespace.Controls.FloatingErrorPane = function() { ... } 
관련 문제