Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
takejohn opened this issue Dec 3, 2024 · 2 comments
Open

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

takejohn opened this issue Dec 3, 2024 · 2 comments

Comments

@takejohn
Copy link
Contributor

takejohn commented Dec 3, 2024

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

@uzmoi
Copy link
Member

uzmoi commented Dec 4, 2024

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

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

@FineArchs
Copy link
Member

FineArchs commented Dec 5, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants