aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

error型をJavaScriptの値に変換できない

Open takejohn opened this issue 11 months ago • 2 comments

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関数を使用しているのでエラーにはならない)

takejohn avatar Dec 03 '24 14:12 takejohn

AiScriptのerrorとJavaScriptのErrorがそのまま対応するものでは無いので、fnと同じく<error>とするのが良いでしょうか…… ただ、この挙動は中々トリッキーに感じるので出来れば変えたい。

Json:stringifyについてはシリアライズ出来ない型にはerrorを返すのが、ミスに気づきやすくて良いと思います。

uzmoi avatar Dec 04 '24 14:12 uzmoi

利便性を考えると、fnやerrorなどのJavascriptに対応する型が存在しない/対応する型に変換すると不都合がある値は、Valueに区別用のSymbolプロパティを付与してそのまま返すのがいいのではないかと考えています。

FineArchs avatar Dec 05 '24 00:12 FineArchs