.NETのTypeScript型定義ファイルの生成

  • 概要

    hmV8用のマクロは、ECMAScript6で記述しても良いですが、
    TypeScriptで記述する、という選択肢が最有力となります。

    TypeScriptを利用して記述していくにしろ、 ECMAScriptで記述するにせよ、
    hmV8のAPIの部分の入力補完を実現したいものです。

    TypeScriptの型定義ファイルの機能を利用することで、
    Visual StudioやVisual Studio Code等のなどモダンな主要環境であれば、 補完環境を利用出来ます。

  • ダウンロード

    DOWNLOAD ⇒ hmV8.d.zipファイル。
    └更新日 2018/04/08

    hmV8のTypeScript型定義ファイルの例

    以下のソースコードは、先述のダウンロードファイル(hmV8.d.ts)の内容そのままとなります。
    本来のhmV8の内部の定義構造や型情報とは全く異なりますが、
    「入力補完」や「常識的記述の範疇のチェック」であれば便利に使えるかと思います。
    かと思います。

    hmV8.d.ts のソースコード内容そのまま
    declare var clr: any;
    
    declare namespace host {
        function lib(libname: string): any;
        function lib(libns: any, libname: string): any;
        function newComObj(progID: string, serverName?: string): any;
    }
    
                    
    
    declare namespace hm {
    
        /**
         * 秀丸のバージョン。
         */
        const version: number;
    
        /**
         * デバッグモニタへの出力。console.logと同じ。
         */
        function debuginfo(message?: any, ...optionalParams: any[]): void;
    
        namespace Macro {
    
            /**
             * 複数の秀丸マクロをヒアドキュメント的に記述するための特殊な関数表記の型。
             */
            type TFnExpression = (f: any) => void;
    
            /**
             * 秀丸マクロを実行。
             */
            function Eval(expression: string | TFnExpression): {
                readonly Result: number;
                readonly Message: string;
                readonly Error: {
                    readonly Message: string;
                }
            };
    
            /**
             * 秀丸マクロの変数の読み書きのための型。関数のような表記と連想配列のような表記。
             */
            interface TVar {
                (key: string): number | string;
                (key: string, value: any): void;
                [key: string]: any;
            }
    
            /**
             * 秀丸マクロの変数の読み書き。
             */
            let Var: TVar;
        }
    
        namespace Edit {
    
            /**
             * 編集中のテキスト内容の読み書き
             */
            let TotalText: string;
    
            /**
             * 通常選択や行選択のテキスト内容の読み書き
             */
            let SelectedText: string;
    
            /**
             * カーソル行のテキスト内容の読み書き
             */
            let LineText: string;
    
            /**
             * カーソルの位置
             */
            const CursorPos: {
                readonly column: number;
                readonly lineno: number;
            };
    
            /**
             * マウスの位置に対応するカーソルの位置
             */
            const MousePos: {
                readonly column: number;
                readonly lineno: number;
                readonly x: number;
                readonly y: number;
            };
        }
    }
    
    interface Console {
        assert(test?: boolean, message?: string, ...optionalParams: any[]): void;
        log(message?: any, ...optionalParams: any[]): void;
    }
    
    declare var console: Console;
    
  • hmV8のTypeScript型定義ファイルの使用例

    Visual Studio、あるいは、Visual Studio Codeなど、モダンなエディタであれば、
    TypeScriptの「トリプルスラッシュ・ディレクティブ」機能であるreference pathを利用することで、補完が効くようになります。

    test.tsなどとして、
    /// <reference path="hmv8.d.ts"/>
    
    let lineno: number = hm.Macro.Var["lineno"];