2016-11-06 2 views
2

그래서, 여기에 특정 인터페이스 만 포함 할 Object 유형의 인터페이스를 만들려고합니다. 예를 들면 다음과 같은 인터페이스 멤버 유형을 정의 할 수있는 방법이 있나요다른 인터페이스 유형의 반복 가능한 객체를 선언하는 방법은 무엇입니까?

Users: { 
    'user_id_goes_here': { 
    name: 'John', 
    last: 'Doe' 
    }, 
    'user_id_goes_here': { 
    name: 'Albert', 
    last: 'Einstein' 
    }, 
    ... 
} 

:

export interface IUser { 
    name: string; 
    last: string; 
}; 

export interface IRoom { 
    users: Object<IUser>; // this is wrong. 
} 

내가 기대하고있어이 사용자는 같은 것이라고? [userId: string]: IUser;문자열 인덱스 서명을 불리는 것입니다

export interface Room { 
    users: UserMap; 
} 

export interface UserMap { 
    [userId: string]: User; 
} 

export interface User { 
    name: string; 
    last: string; 
}  

그건 :

답변

3

난 당신이 뭔가를하려는 생각합니다. 즉 문자열을 사용하여 UserMap에 색인을 추가 할 때마다 IUser이 표시됩니다.

+0

답변 해 주셔서 감사합니다. 나는 내가 google에서 무엇을 검색해야하는지에 관해 명확히하지 않았다. 이제 나는지도 유형이라는 것을 기억합니다. – Nika

+0

물론, 인덱스 서명은 자바 스크립트에서지도와 유사한 객체를 모델링하기위한 것이지만, 무엇이 호출되는지는 분명하지 않습니다. 희망을 갖고 누군가 검색하면이 대답을 찾습니다. 만약 당신이 사용하고있는 타입이 모두 타입이라면,'class' 대신에'interface' 선언을 사용할 수 있습니다 ('interface's는 아무런 방출도하지 않기 때문에). –

+0

당신 말이 맞아요. 나는 인터페이스에 대해 언급하는 것을 잊어 버렸고, 많은 생각없이 빠르게 작성된 예제 였고 피곤했습니다. 조언 주셔서 감사합니다! 추신 : 질문을 편집하여 클래스를 인터페이스로 대체했습니다. – Nika

관련 문제