2017-05-09 8 views
0

私はjavascriptの土地で働いてかなり単純なjavascriptの方法foo [bar](部分的に動的プロパティアクセス)を寓話でどのように行うのですか?

(props,propName,componentName) => { 
    var value = props[propName]; 
    const getOrSpread = name => 
     props[name] || props.spread && props.spread[name]; 
    // remainder of function code omitted 
} 

を持っています。私はそれは寓話に変換しようとしているが、私はそれは間違いなく、小道具は、その後IReactProps、と定義されている場合、両方の

module JsxHelpers = 
    type IReactProps = 
     abstract member spread : obj 


let isfuncOrNullPropType (props:IReactProps) (propName:string) componentName = 
     let propsO :obj = box props 
     let value:obj = propsO?propName 

     let valueAttempt2:obj = (box props)?(propName) 
     // rest of translation not attempted yet 
     value 

props[propName].spreadまたはダイナミックアクセスへのプロパティへのアクセスが存在するではなく、持って取得することができますいずれか.spread 2つのどちらもコンパイルできません。let value lines や小道具がobjとして定義され、それがこの式は、型を持つことが期待された `言う「objのが、ここではタイプ「が」 - > objの

でもドキュメントから、最も単純なオブジェクトをコンパイルする表示されません。 "fable-core": "^1.0.0-narumi-905"

答えて

0

を使用して

let isfuncOrNullPropType (props:obj) (propName:string) = 
    let value2:obj = props?propName 
    value2 

あなたは間違いなく、マニュアルに従って括弧で小道具の名前を配置する必要があります。コンパイラエラーはprops?(propName)'a -> objを返すためです。明らかに、動的(?)演算子は、Applicableを返し、寓話ソースから:

/// DO NOT USE: Internal type for Fable dynamic operations 
type Applicable = obj->obj 

おそらく試みる:

let value : obj = unbox<obj> (props?(propName)) 
関連する問題