2017-11-28 4 views
0

Elm (0.18)을 사용하고 simonh1000의 FileReader 라이브러리를 가져 왔습니다. 파일 값을 저장하려면 다음 유형을 사용합니다.Elm에서 빈 파일 값 초기화

import Json.Decode as Json exposing (Decoder, Value) 
... 
{-| An ArrayBuffer is a Elm Json Value. 
-} 
type alias FileContentArrayBuffer = 
    Value 

빈 자리 표시 자로 모델을 초기화하고 싶습니다. 다음과 같이 내가 이렇게 :

type alias Model = 
    { 
    username : String 
    , filecontent: FileContentArrayBuffer 
    } 

initialModel : Model 
initialModel = 
    { 
    username = "mark" 
    , filecontent = Nothing 
    } 

을하지만 컴파일러는 나에게이 오류 제공 : Json.Decode.Value 이후

The type annotation for `initialModel` says it is a: 

    Model 

But the definition (shown above) is a: 

    { username : String 
    , filecontent : Maybe a 
    } 
+1

'모델'의 정의는 무엇입니까? 또한'init'을''Html.program'] (http://package.elm-lang.org/packages/elm-lang/html/2.0.0/Html#program)에 전달하려고합니까?'' init'은'(model, Cmd msg)'타입이 될까요? –

+0

@ChadGilbert 모델 정의에는', emptyNewDesiredType : MyNewDesiredType'이 포함됩니다. 또한'init'은 단지 초기화 된 모델 일뿐입니다. 모호함을 피하기 위해 이것을 업데이트하겠습니다. –

+1

특별히 "무언가"란 무엇을 의미합니까? 'emptyNewDesiredType : 아마도 MyNewDesiredType'을 포함하도록 모델을 재정의하는 것보다 도메인에 더 적합한 json 값이 있습니까? –

답변

2

Json.Encode.Value의 별칭입니다, 당신은 정말 JSON {}Value 유형을 초기화 할 경우, 다음을 수행 할 수 있습니다.

filecontent = Json.Encode.object [] 

그러나 리팩터링을하는 것이 더 바람직하다고 생각합니다. Maybe FileContentArrayBuffer 필드 유형으로 변경되었으므로 Value 유형을 사용하여 {}으로 디코딩하는 경우 어떻게 하시겠습니까? Nothing 값은 분명히 더 적합하고 관용적 인 것처럼 보입니다.