MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上

前の記事

以前の記事では、モナコでメソッドにコメントを追加する方法を説明しました。codelenまたはMarkerを使用して、変数、定数、メソッドのドキュメントを表示します。しかし、このアプローチは大規模なライブラリにはあまり適していません。例えば、Javaライブラリには何百ものメソッドがあり、怠惰なプログラマがすべてのメソッドをモナコに追加することは不可能です。そこで、この記事では、エディタのエクスペリエンスを向上させるためにTypeScript型宣言ファイルを紹介します。メソッドの詳細なドキュメントだけでなく、そのメソッドの自動補完も表示できます。

コアメソッドは1つだけです。 addExtraLib()

addExtraLib

モナコはvscodeアクセスLSP(言語サービスプロトコル)とは異なり、自動補完を大量に実装する必要があり、メソッドアノテーションは面倒ですが、monacoは型宣言の文字列を渡すaddExtraLibメソッドを追加しました。以下のような内容。

declare class Facts {
  /**
   * Returns the next fact
   */
  static next(): string
}

addExtraLibを使用してこのテキストをmonaoc言語サービスに追加すると、ユーザが書いています。Facts.next()これは自動的に行われ、nextメソッドにそのメソッドのコメントが表示されます。下の写真は

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图

ts型宣言の内容を使用して言語モデルを作成した場合、次の図のようにメソッド上で具体的な宣言を見ることができます:

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图1

このシナリオには、特に特定の方法に精通していないプログラマにとって、多くの利点があります。メソッド名にマウスオーバーしてドキュメントを表示できます。とてもフレンドリーで便利です。

lodashやjQueryのようなJava Scriptライブラリを使用しているとき、メソッドの完全な名前を忘れたり、メソッドの引数の順序を覚えていないことがあります。メソッドファイルが必要です。

以下では、lodashとjQueryライブラリを例にとり、Monacoに2つのライブラリを追加します。

loadashライブラリのmonacoエディタへの統合

まず、lodashのTS宣言ファイルを取得します。簡単な検索の結果、https//github.com/DefinitelyTyped/DefinitelyTypedというgitリポジトリを見つけました。
このリポジトリには、よく使うライブラリのts宣言がたくさんあります。
LodashのTSステートメントを知っています。こちらで入手できます。
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/v3/index.d.ts
図書館に注意。index.d.ts ただのシェルであり、実体は個々のサブファイルに分散されています。
上記のリンクの内容を保存します。lodash.d.ts文書の中で

次に、HTMLでfetchを使用してファイルの具体的な内容を取得し、コアコードは次のとおりです。

const monacoTypesUrl = './lodash.d.ts'
const libSource = await (await fetch(monacoTypesUrl)).text();
console.log(libSource)

var libUri = "ts:filename/lodash.d.ts";
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
// When resolving definitions and references, the editor will try to use created models.
// Creating a model for the library allows "peek definition/references" commands to work with the library.
monaco.editor.createModel(libSource, "typescript", monaco.Uri.parse(libUri));

これを統合したら、エディタで入力したときのパフォーマンスを見てください。lodash名前空間です。_ 時に

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图2

次に、cloneDeepメソッドを呼び出します。次のように動作します。

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图3

それは素晴らしいですか?

以下はjQueryライブラリの統合です。

jQueryライブラリをMonacoエディタに統合する

上記の手順に従って、まずjqueyrのts宣言ファイルを取得します。
以下のリンクから、jQuery v 2のTS宣言を入手できます。
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jquery/v2/index.d.ts

ファイルの内容をコピーして、ローカルファイルjquery.d.tsに配置します。
変更点は monacoTypesUrl 変数は './jquery.d.ts'

jQuery Ajaxの自動補完を見てみましょう。

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图4


Ajaxの参照方法

MonacoにTSタイプライブラリを追加し、エディタエクスペリエンスを大幅に向上插图5

これはモナコで追加ライブラリを統合する素晴らしい経験です。エディタのユーザーエクスペリエンスを大幅に向上させます。

さらに、複数のTS宣言ライブラリを同時に注入することもできますし、自動プロンプトを完了するために独自のTS宣言ライブラリを記述することもできます。

概要まとめ

エディタは非常に複雑なソフトウェア製品であり、ユーザーエクスペリエンスを向上させる機能には注意が必要です。
開発経験は、製品の成功を直接決定します。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.