typescript의 특정 설정을 감안할 때 javascript에서 빈 클래스 개체로 런타임에 끝납니다. 설정은 서로 참조하는 2 개의 클래스가 하나의 클래스가 다른 클래스의 범위에서 비어있는 것과 같습니다. 나는 그것을 피하는 방법을 안다. (2의 세 번째 클래스를 도입한다.) 그러나 나는 왜 그것이 일어 났는가에 대해 궁금해하며 여전히 상호 참조를 만들고 여전히 작동 코드를 가지고있는 방법이있다. 나는 그것을 작동하게하려고 수천 톤의 설치를 시도했다. 그래서 여기에 내가 찾은 것이있다.Typescript 클래스 비어 있음
설정 :
//를 ClassA
import ClassB = require('ClassB');
import ClassC = require('ClassC');
class ClassA
{
constructor()
{
console.log(ClassC.TEST);// shows 1
new ClassB();// shows null
console.log(ClassC.TEST);// shows 1
}
}
export = ClassA;
// ClassB가 (다른 모듈)
이 : (모듈 이름과 클래스 이름 무관) 자체 모듈의 각 클래스는 를 ClassA는 우리의 주요 항목입니다import ClassC = require('ClassC');
class ClassB
{
public static ClassBRef:any;
constructor()
{
console.log(ClassC.TEST);// in this scope ClassC is an empty object with no properties
}
}
export = ClassB;
// ClassC
(다른 모듈)ClassB는 ClassC 및 ClassC 참조를 참조하므로 ClassB는 결과입니다. ClassA 범위 내의 ClassC는 문제없이 존재하지만 ClassB 범위 내에서 ClassC는 런타임에 속성이없는 빈 객체입니다. 다른 말로하면 타이프 스크립트에서는 모든 것이 잘되지만 자바 스크립트에서는 가지지 않을 것입니다. 정적 또는 인스턴스 범위, 생성자 또는 인스턴스 메서드 또는 정적 메서드 등을 사용하여 모듈 이름, 위치, 클래스 이름 변경 등은 아무런 차이가 없으며 ClassB 범위에서 항상 ClassC가 비어 있습니다.
마찬가지로 수정 프로그램은 2 개의 결함이있는 클래스와 통신을 처리하는 세 번째 클래스 (2 클래스 중 적어도 하나는 두 번째 클래스에 대한 참조가 없음)를 가지고 있지만 다시는 내 질문이없이 세 번째 클래스가 필요하고 두 클래스 간의 상호 참조를 제거하지 않아도됩니까?
들으, 나는 것을 시도 할 것이다 다시보고하십시오. –
게시 된 답변은 모두 좋지만 이번에는 내 설정이 실패한 이유에 대한 자세한 설명이 나와 있습니다. 수락 됨. 또 다른 질문은 typescript 컴파일러가 그 설정에 아무런 문제가 없다는 것입니다. 또한 내 typescript 프로젝트가 (다른 언어로) 자동으로 생성되기 때문에 변환 된 코드에서 가장 잘 맞는 세 번째 클래스 브리지 솔루션을 유지할 것입니다. Thx –