注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
TypeScript の関数は、TypeScript クラス のメソッドとして宣言されます。関数が発見および公開されるためには、いくつかの要件があります:
public
でなければなりませんfunctions-typescript/src/index.ts
ファイルからエクスポートされていなければなりません@foundry/functions-api
パッケージからインポートされた以下のデコレータのいずれかで装飾されていなければなりません:
@Function()
。@OntologyEditFunction()
。
@OntologyEditFunction()
メソッドを使用する際に、@Edits([object type])
デコレータでオプションで指定できます。@Edits([object type])
デコレータが欠けている場合、コードの静的分析を使用して最善を尽くしてオブジェクトの出所情報が推測されます。@Query({ apiName: "userDefinedAPIName"})
。以下は、このように正しくエクスポートされた関数の例です:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
import { Function, OntologyEditFunction, Integer, Edits } from "@foundry/functions-api"; import { Employee } from "@foundry/ontology-api"; export class MyUsefulFunctions { // 数値をインクリメントする関数 @Function() public incrementNumber(x: Integer): Integer { return x + 1; } // 従業員の名前を更新する関数 @Edits(Employee) @OntologyEditFunction() public updateName(employee: Employee, newName: string): void { employee.firstName = newName; } // 名前で従業員を検索する関数 @Query({ apiName: "getEmployeesByName" }) public async getEmployeesByName(name: string): Promise<ObjectSet<Employee>> { return Objects.search().employee().filter(employee => employee.firstName.exactMatch(name)); } }
プライベートなメソッドや適切なデコレーションで装飾されていないメソッドは、ファンクションレジストリに公開されません。これにより、ヘルパー関数やユーティリティを再利用や整理のために作成することができます。
TypeScript リポジトリの各ファンクションは、クラス名とメソッド名で一意に定義されていることに注意してください。クラス名やメソッド名を変更すると、ファンクションは新しい識別子の下で公開されます。