如何使用其他代码库中定义的函数?

How can I use functions defined in other Code Repository?

我在代码库 (A) 中定义了一组函数。代码库 A 具有以下结构,我的 class objectController 在 'objectController.ts' 中定义:

如何在另一个代码库 (B) 中使用 objectController.ts 中定义的函数?

我实际上建议尽可能在同一个代码存储库中工作,但这在某些情况下可能是不可避免的

设置源存储库的步骤:

  1. 修改 package.json 以正确发布程序包。

    1. 设置一个新的 name 字段来定义包名称在其他存储库中应该是什么。为它加上特定用例的前缀以避免冲突可能是有意义的。

    2. main 字段更新为 "dist/Functions.bundle.js",将 types 字段更新为 "src/dist/index.d.ts"

    3. (可选)设置一个description.

  2. 提交 package.json 更改并在此存储库上发布标签。

  3. 验证检查是否通过。

目标存储库中的步骤:

  1. 导入您的源存储库。

    1. 转到“设置”>“工件”。

    2. 单击 + 添加

    3. Select 您的源存储库并将其作为后备存储库导入。

  2. 前往 package.json。在 dependencies 下,添加您在上面的 Source 存储库中设置的包名称(步骤 1.1),并将版本设置为您发布的标签(步骤 2)。

  3. 从您的包中导入任何导出的 类 并在您的代码中正常使用它们。

    1. 注意 : 您必须在上述步骤 (2) 后重新启动 Code Assist 才能正确显示新添加的包。

注意事项

  1. 所有代码都必须位于源存储库的 index.ts 中才能正常工作。

  2. 目标存储库中使用导入包的单元测试将失败。 (这实际上可能是可以修复的,但我没有让它工作)

  3. 您需要确保已将源存储库所依赖的所有 Ontology 对象和关系导入目标存储库。

  4. 我也 运行 遇到目标存储库中的输入问题。

    1. 错误信息:

       Errors: 
       src/index.ts(6,21): error TS7016: Could not find a declaration file for module '{module_name}'. '{redacted}/repo/functions-typescript/node_modules/{module_name}/dist/Functions.bundle.js' implicitly has an 'any' type.
      
      Try `npm install @types/{module_name}` if it exists or add a new declaration (.d.ts) file containing `declare module '{module_name}';`
      
    2. 解法:

      1. 创建一个名为 typings 的文件夹。

      2. typings 中创建一个名为 index.d.ts 的文件。

      3. 在(2)中创建的文件中如下所示声明模块index.d.ts

         declare module '{module_name}';
        
      4. typeRoots元素下的tsconfig.json中添加(2)index.d.ts中创建的文件的路径

         "typeRoots": [
              "./typings",
              "./node_modules/@types/"
         ]