2017-03-23 4 views
0

를 입력하는 기본 값을 할당하는 가장 좋은 방법 나는이 가지고예를 들어 소품

declare interface GameConfFont { 
    families: Array<string>, 
    css: string, 
} 

나는 내가 가지고있는 것을 싫어을 명시 적으로 기본값을 캐스팅 여기,이 <GameConfFont>{},하지만 그렇지 않다면 TS는 그것에 대해 불평합니다. 그것을 작성하는 다른, 더 우아한 방법이 있습니까?

+0

어떤 TS 버전을 사용하고 있으며 오류가 있습니까? 'noImplicitAny'가 켜져있는 상태에서 TS 2.2.1을 사용하고 있으므로이 작업을 수행 할 필요가 없습니다. – Paarth

+0

'GameConfFont'의 인터페이스 정의를 게시하십시오. – Paarth

+0

GameConfFont이 질문 설명에 게시되었습니다. – shal

답변

2

빈 객체 ({}는) 유효한 GameConfFont하지 않습니다. 필수 속성이 누락되었습니다. this.fontGameConfFont의 잘못된 값을 넣으시겠습니까? 당신이 GameConfFont의 속성을 선택하고 싶다면, 다음과 같이 선언 할 :

interface GameConfFont { 
    families?: Array<string>, 
    css?: string, 
} 

또 다른 대안은 null로 this.font를 초기화 할 수 있습니다.

+0

나중에 해당 속성을 설정하고 있지만 맞으면 null로 초기화해야합니다. – shal

1

GameConfFont을 클래스로 선언하고 해당 생성자를 대신 사용 하시겠습니까?

class GameConfFont 
{ 
    constructor() 
    { 
     //Initialize default instance here 
    } 

    public name: string; 
} 

class SomeClass 
{ 
    private font:GameConfFont; 

    public init(data) 
    { 
     this.font = data.game.font || new GameConfFont(); 
    } 
}