Файл определения машинописного текста для хоста сценариев внутри настольного приложения без веб-фреймворка
Я пытаюсь создать файл определения машинописного текста для javascript для использования в настольном приложении. Меня интересует особенность intellisense в машинописи.
Среда, в которой выполняется файл javascript, находится внутри другого настольного приложения, использующего хост скриптов Windows. У меня есть доступ к документации поставщика настольных приложений (включая объекты и функции и их отношение), но не к исходному коду. Я использую Visual Studio 2017 для кодирования файлов javascript(Jscript).
Настольное приложение представляет свой API-интерфейс как члены Class Class для сценария, включая документ- член (например, веб-браузер, но с другими методами и свойствами).
Пример отношений объекта:
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;
}
Мне неясно, где я должен начать писать определения. Я думаю, мне нужно создать файл с именем "index.d.ts" в той же папке, что и файл javascript - правильно?
Все примеры, которые я могу найти в Интернете, описывают, как это сделать при использовании NPM или использовании 'import' в файле проекта javascript. У меня нет ничего из вышеперечисленного. Файл javascript представляет собой только один файл без включений, в котором приложение для настольного компьютера выполняет функцию.
Я пытаюсь использовать это в качестве отправной точки: https://www.typescriptlang.org/docs/handbook/declaration-files/templates/global-d-ts.html, но, похоже, ничего не добьется.
В некоторых местах примеры используют экспорт, а в других местах объявляют и на разных уровнях. Я не могу понять связь. Я просто тупой?:)
Пока у меня есть это в 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;
}
}