aiscript
aiscript copied to clipboard
error型をJavaScriptの値に変換できない
utils.valToJs関数にerror型を渡すとUnrecognized value type: errorのエラーが出る。
Json:stringify関数の処理はutils.valToJsを呼び出すのでerror型を含む値を渡すとプログラムが終了してしまう。
Json:stringify(Error:create('message')) // Unrecognized value type: error
ドキュメンテーションサイトのプレイグラウンドでもerror型の値を出力しようとするとエラーになる:
https://aiscript-dev.github.io/ja/playground.html#N4Igxg9gJgpiBcIA88AEBRATpin5kxgEMAXGACgHIBbGAZzqIHMZKBKEAXyA
(このリポジトリのプレイグラウンドではutils.valToString関数を使用しているのでエラーにはならない)
AiScriptのerrorとJavaScriptのErrorがそのまま対応するものでは無いので、fnと同じく<error>とするのが良いでしょうか……
ただ、この挙動は中々トリッキーに感じるので出来れば変えたい。
Json:stringifyについてはシリアライズ出来ない型にはerrorを返すのが、ミスに気づきやすくて良いと思います。
利便性を考えると、fnやerrorなどのJavascriptに対応する型が存在しない/対応する型に変換すると不都合がある値は、Valueに区別用のSymbolプロパティを付与してそのまま返すのがいいのではないかと考えています。