Vega Codegenに関するよくある質問(FAQ)
-
エイリアス、ジェネリクスなどの高度なTypeScript型をサポートしていますか?
エイリアス、列挙型、ユニオン型には基本的なサポートはありますが、制限があります。たとえば、エイリアスを含む列挙型やユニオン型は、エイリアスがオブジェクトを表すと見なします。文字列または数値の列挙型とユニオン型はサポートされていますが、異なる型の組み合わせはサポートされていません。また、ジェネリクスはサポートされていません。
-
TypeScriptインターフェイスではどのような型を使用できますか?
ほとんどの基本的なTypeScript型に加えて、
Int32、Float、ArrayBufferなど、一部のカスタム型もサポートされています。完全な一覧については、型マッピング表を参照してください。 -
.bakファイルが表示されるのはなぜですか?
Codegenを
--newフラグ付きで実行すると、ターボモジュール実装用のテンプレートファイルが生成されます。同じ名前の既存の実装は、進行中または以前の実装コードを新しいファイルに移行したい場合に備えて、.bak拡張子で保存されます。バックアップファイルの内容を参照する必要がなくなったら、バックアップファイルを削除できます。 -
React NativeのCodegenツールに慣れています。これとどのように違いますか?
TypeScriptインターフェイスをネイティブコードテンプレートに変換するという、基本的な考え方は同じです。Vegaのネイティブの型サポートはReact Nativeと完全に一致しているわけではありませんが、サポートされている型の範囲は似ています。また、ビルドシステムや開発プロセスと統合する場所にも違いがあります。React Native Codegenはまだ実験段階なので、将来大きな変更がある可能性があります。
-
CodegenがSpecファイルを生成するのはなぜですか?
定型的な仕様と人間が提供する実装の詳細を分離することで、重要な部分を上書きすることなく、安全に定型仕様を生成および再生成できます。Specファイルで定義されたすべての関数は、必ず実装する必要があります(コンパイラがこれを強制します)。
Specファイルを修正する必要がある場合、codegenを再実行するとこれらのファイルが再生成され、変更が上書きされることに注意してください。 -
1つのパッケージに複数のターボモジュールを含めることはできますか?
Vega Codegenは現在、一度に1つのモジュールの生成のみをサポートしています。これは、モジュールごとに異なる可能性のあるカスタマイズオプション(モジュール名を指定するCLIフラグなど)をより適切にサポートするためです。とはいえ、パッケージには依然として複数のターボモジュールを含めることができます。ただし、それらに対してCodegenを個別に実行する必要があります。
一般的なエラーメッセージ
-
'throw new Error('Optional args are not supported by Vega TurboModules.');'
オプション引数は、Vegaターボモジュールではサポートされていません。これはCodegenの制限ではなく、Codegenによって導入されたチェックです。TypeScriptインターフェースでオプション引数
(arg?: type)を使用している場合、引数が渡されないとターボモジュールは実行時に失敗するため、代わりに必須引数として定義する必要があります。
オプションの引数は、ターボモジュールのJavaScriptラッパーでサポートできます。 -
'Unrecognized generic type 'undefined' in NativeModule spec.'
ほとんどの場合、別のファイルから型がインポートされていることが原因です。これはCodegenではサポートされていません。これらの型はTypeScriptインターフェイスと同じファイルに移動することをお勧めします。特定の型(
Int32、Double、Floatなど)は@amazon-devices/keplerscript-turbomodule-apiからインポートでき、その方法でインポートした場合はCodegenでサポートされます。 -
'Unrecognized generic type 'T' in Native Module spec.'
ジェネリクスは、Vegaターボモジュールではサポートされていません。
-
'TypeScript type annotation 'TSAnyKeyword' is unsupported in NativeModule specs.'
any型は、Codegenではサポートされていません。より厳密な型定義を使用することを検討してください。複数の型を受け入れる(event: any) => voidのようなコールバックがある場合、@amazon-devices/keplerscript-turbomodule-apiからCallbackParam型を使用できます。 -
'npm ERR! 404 Not Found - GET https://registry.npmjs.org/keplerscript-turbomodule-api - Not found'
スクリプトを実行する前に、パッケージをローカルワークスペースにインストールする必要があります。
Last updated: 2025年9月30日

