TS 3.4+ 부터 좀더 타이트하게 잡는거 같아요. 이전에 class가 type으로 사용되는 경우 따로 잡지 않았는데 좀더 깐깐해졌네요. 일단 원칙상 당연히 서로를 사용하는 코드의 경우는 정말 순환참조라서 안되고요^^; 우리 처럼 코드를 사용하는게 아니라 type으로 사용되는 경우는 아래 방법으로 우회가 됩니다.
export class State {
...
}
export type StateType = State;
위 처럼 정의를 하고 State를 타입으로 사용하는 곳에서 StateType을 사용하면 됩니다^^/