注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
TypeScript ↗ 関数は TypeScript クラス ↗ のメソッドとして宣言されます。関数が発見され、公開されるためには、いくつかの要件があります。
public
でなければなりませんfunctions-typescript/src/index.ts
ファイルからエクスポートされなければなりません@foundry/functions-api
パッケージからインポートされた以下のデコレータのいずれかで装飾されなければなりません:
@Function()
を使用します。@OntologyEditFunction()
を使用します。
@OntologyEditFunction()
メソッドを使用する際に、@Edits([object type])
デコレータを使用して任意で指定できます。@Edits([object type])
デコレータがない場合、コードの静的解析を使用してオブジェクトの出所情報が最善の努力で推測されます。@Query({ apiName: "userDefinedAPIName"})
を使用します。このデコレータは @Function
デコレータと併用せず、単独で使用する必要があります。以下に、この方法で正しくエクスポートされた関数の例を示します。
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 { // 数値を1増やす関数 @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)); } }
非公開または関連するデコレーションで装飾されていないメソッドは、Function Registry に公開されません。これにより、ユーザーは再利用や整理のためにヘルパー関数やユーティリティを作成することができます。
TypeScript リポジトリ内の各関数はクラス名とメソッド名によって一意に定義されます。クラス名やメソッド名を変更すると、その関数は新しい識別子の下で公開されます。