2014-04-15 3 views
0

TypeScript 1.0 및 웹 필수 기능 3.7이 포함 된 Visual Studio 2012를 사용하고 있습니다. 내 클래스의 일부 개인 정적 변수를 TypeScript 파일에 선언했습니다. 그러나이 파일을 저장할 때 자바 스크립트 파일에이 멤버가 표시되지 않으며 런타임에 시스템에서 예외가 발생합니다.TypeScript 1.0에서 전용 멤버가 생성되지 않습니다

지금

enter image description here

이전 시스템의 사용은 이러한 속성을 생성합니다. 그러나 최근에 TypeScript 1.0 &으로 업그레이드되었으므로이 정적 멤버는 보이지 않습니다.

이전 : enter image description here

+0

컴파일 된 JS 나에게 유효한 것 할 필요가있다. 왜 더 이상 그들을 보지 않겠습니까? –

+0

@ JohannesKlauß : 두 개의 이미지를 추가했습니다. 첫 번째 이미지에는 런타임에 개인 변수 및 오류가 발생하지 않지만 두 번째 이미지에는 이전 버전의 이미지 (이전 버전의 typeScript)가 표시됩니다. 왜 컴파일 된 버전이 유효하다고 생각하는지 모르겠습니다. 개인 변수 선언을 포함할까요? – SharpCoder

답변

2
는 예를 들어, 처음 사용될 때 속성을 추가 할 수있는 동적 언어이기 때문에 명시 적으로 컴파일 된 자바 스크립트를 언급 할 필요가 없다

때를 값을 설정하십시오 ...

속성이 정적이므로 클래스 이름을 통해 액세스해야합니다. 아래 예에서는 User._name입니다.

class User { 
    private static _name: string; 

    static setName(name: string) { 
     User._name = name; 
    } 

    static getName() { 
     return User._name; 
    } 
} 

User.setName('Steve'); 

alert(User.getName()); // 'Steve' 

내가 언급 한 바와 같이, 자바 스크립트가 필요하지 않기 때문에 _name 특성이있을 것이라는 사실을 "설정"할 필요가 없습니다.

var User = (function() { 
    function User() { 
    } 
    User.setName = function (name) { 
     User._name = name; // this adds a property if it doesn't exist 
    }; 

    User.getName = function() { 
     return User._name; 
    }; 
    return User; 
})(); 

User.setName('Steve'); 

alert(User.getName()); 

당신이 처음부터 값을 지정해야합니다, 그것은 표시 할 경우 : 다음은 위의 예에서 출력은

private static _name = ''; 
-1

예외가 발생, 당신이 제공되어서는 안된다 올바르게 액세스하고 있습니다.

class A { 
    private STATIC: string; 
} 

같은 정의되지 않은 회원은 일반 자바 스크립트와 일치 undefined의 값이 :

var something; // undefined 

타이프 이전 ""에 초기화를 (유사한 언어에 비해) 실제로 "잘못된"입니다. 확실히 Typescript를 추측하는 것일뿐입니다. 이을 유지하려는 경우, 당신은

class A { 
    private STATIC: string = ""; 
}