2017-03-18 20 views
0

私はいくつかのjavascript jsonデータを持っていれば、私はforeign importそのデータをユーザー定義のnewtype以上で、実際のデータのサブセットで表示できますか? JavaScriptでレコードの上にnewtypeの外部インポート

:purescriptで

exports.foo = {foo: "foo", bar: "bar"} 

:たとえば

newtype Foo = Foo {foo :: String} 
foreign import foo :: Foo 

私たちは、参照としてデータを扱うためにforeign import data ...を使用することができますが、私は希望の一部をすることを知っていますユーザーがアクセスできるようにする型情報。これはちょうど最も簡単な方法のように思えました。

答えて

2

タイプが匿名のJSオブジェクト(「クラス」オブジェクト/プロトタイプなどから構築されたオブジェクトではない)であれば、外国からのインポートを完全に控えることができ、PSの後にはまたはnewtypeと宣言するだけですJSレコードは1:1に対応しています。

タイプの構造体の一部を消去することは確かに可能です - PSは実行時に余分なフィールドを持っているかどうか気にしません。リストされたフィールドを含むコードを生成するだけです(record-update -syntaxは更新前にオブジェクトを浅くコピーしていますが、もう一度やり直すと、余分なキーが保存されます)。

ここで唯一の問題は、PSタイプのレコードが作成されてからJSに渡された場合に発生する唯一の問題です。余分なフィールドがないためです。レコードがJSに戻ってこない場合や、欠けているキーが問題でない場合は、それはすべて役に立ちます。

関連する問題