我正在尝试为用于桌面应用程序的 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;
}
}