注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
TypeScript ↗ 函数被声明为 TypeScript 类 ↗ 的方法。发现和发布函数有一些要求:
public
functions-typescript/src/index.ts
文件中导出@foundry/functions-api
包导入的以下装饰器之一进行装饰:
@Function()
。@OntologyEditFunction()
。
@OntologyEditFunction()
方法时,可以选择性地使用 @Edits([object type])
装饰器指定 Object 来源信息。@Edits([object type])
装饰器,Object 来源信息将通过代码的静态分析以尽力而为的方式推断。@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 { @Function() public incrementNumber(x: Integer): Integer { // 该函数接收一个整数并返回其加1后的值 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库中的函数都是由其类名和方法名唯一定义的——如果您更改类或方法的名称,该函数将以新的标识符发布。