1

我正在尝试为用于桌面应用程序的 javascript 创建一个打字稿定义文件。我对打字稿的智能感知功能感兴趣。

运行 javascript 文件的环境位于另一个使用 windows 脚本主机的桌面应用程序中。我可以访问桌面应用程序供应商的文档(包括对象和函数及其关系),但不能访问源代码。我正在使用 Visual Studio 2017 对 javascript(Jscript) 文件进行编码。

桌面应用程序将其 API 作为类应用程序的成员公开给脚本,包括成员文档(类似于 web 浏览器,但具有不同的方法和属性)。

对象关系的示例如下:

Application            (class cvAppOld)
-> Document            (class cvDoc)        (accessed by 'document')
   -> Table            (class cvTable)      (accessed by 'document.getTable()')
   -> Paragraph        (class cvPara)       (accessed by 'document.getPara()')
-> ApplicationSettings (class cvAppSetting) (accessed by 'settings')

根据开发者文档:

应用程序对象是主要对象。它的所有属性和方法都可以在脚本环境中本地访问。

脚本文件“somefile.js”的示例:

function sortTable("sometablename") {
   var table = document.getTable("sometablename");
   table.autosort = 1;
   table.update;
   document.save;
}

我不清楚我应该从哪里开始编写定义。我想我必须在与 javascript 文件相同的文件夹中创建一个名为“index.d.ts”的文件 - 对吧?

我可以在网上找到的所有示例都描述了在使用 NPM 或在 javascript 项目文件中使用“导入”时如何执行此操作。以上我都没有。javascript 文件只是一个没有包含的文件,桌面应用程序在其中运行一个函数。

我试图以此为起点:https ://www.typescriptlang.org/docs/handbook/declaration-files/templates/global-d-ts.html ,但似乎无法取得任何进展。

示例在某些地方使用export ,而在其他地方则使用declare,并且在不同的级别上。我似乎无法掌握其中的联系。我只是笨吗?:)

到目前为止,我在 index.d.ts 中有这个:

declare namespace Something {
   class CvDoc {
      getPara(Index: number): CvPara;
      getTable(Index: number): CvTable;
   }
   class cvPara {
      someProperty: any;
   }
   class cvTable {
      someProperty: any;
   }
   class cvAppSettings {
      someProperty: any;
   }
}
4

0 回答 0