TL;DR;
VS Code IntelliSense のコード分析機能を使用した、純粋な JavaScript インターフェイスのシミュレーションはスキルと言えます。オブジェクト ファクトリと空の関数を巧みに組み合わせることで、インターフェイスのようなコード プロンプトと型チェックが実装され、コードを簡素化するために null 値結合演算子 (??) が使用されます。運用環境では、ビルド スクリプトを使用して不要なインターフェイス コードを削除する必要があります。
以下は、VS Code IntelliSense などのコード エディターでのコード分析に依存する純粋な JavaScript インターフェイスの例であるため、トリックとも言えます。
<code class="language-javascript">var interface = () => null; var InterfaceOptions = () => ({ name: '', }); InterfaceOptions = interface; // 使用示例 // ===== let opt = InterfaceOptions`` ?? { name: 'Bagel', }; function createItem(options = InterfaceOptions``) { // ... } createItem(opt);</code>
純粋な JavaScript でプロパティの名前を変更する例を次に示します。
プロパティのコード分析を初期化し、オブジェクトを null を返す関数に置き換えるオブジェクト ファクトリを作成します。これにより、null 合体演算子 (??) を使用したいくつかの宣言トリックが可能になり、コードを整然とした状態に保つことができます。
配列でも動作します!以下の 豆知識 #4 セクションのサンプル コードを参照してください。
createBox()
オプションのプロパティの入力を要求することを願っています。 InterfaceBoxOptions
などの一意の名前プレフィックスを使用するだけで済みます。 boxOptions
が null を返すようにする必要があります。 これで、純粋な JavaScript で動作するインターフェイスのようなセットアップができました。最初から TypeScript を使うべきだったかもしれませんが、私は西部開拓時代にいます。
オブジェクト宣言については、コンプレッサーはマージによって返された null 値を判断しないため、Terser に渡す前に interfaceName ??
を空の文字列に置き換えるビルド スクリプトを作成しました。
前:
<code class="language-javascript">var interface = () => null; var InterfaceOptions = () => ({ name: '', }); InterfaceOptions = interface; // 使用示例 // ===== let opt = InterfaceOptions`` ?? { name: 'Bagel', }; function createItem(options = InterfaceOptions``) { // ... } createItem(opt);</code>
の後:
<code class="language-javascript">let opt = InterfaceOptions`` ?? { name: null, };</code>
インターフェース部分を削除しないと、圧縮されたコードは次のようになります:
<code class="language-javascript">let opt = { name: null, };</code>
var
インターフェイスの場合は、var
または let
の代わりに const
を使用する必要があります。これにより、Terser を使用して最上位で圧縮するときに確実に削除されます。
<code class="language-javascript">let opt = (() => null)() ?? { name: null, };</code>
<code class="language-javascript">var interface = () => null; var InterfaceOptions = () => ({ name: null, }); InterfaceOptions = interface;</code>
簡潔な問題 #572: 割り当てられるだけで決して読み取られない変数を削除します。
グローバル インターフェイス関数が利用できない場合、たとえば他の人のためにライブラリを作成している場合は、次のようにすることができます:
<code class="language-javascript">// terser 选项 { toplevel: true, compress: true, // ... }</code>
まだ理解していない場合は、次のようにしてください:
<code class="language-javascript">var interface = () => null; var InterfaceOptions = () => ({ name: '', }); InterfaceOptions = interface; // 使用示例 // ===== let opt = InterfaceOptions`` ?? { name: 'Bagel', }; function createItem(options = InterfaceOptions``) { // ... } createItem(opt);</code>
悪くないですよね?
はい、ただし、IntelliSense が適切に動作するには、アレイ用に別のインターフェイスを作成する必要があります。かなり混乱していると言えます。
例 1:
<code class="language-javascript">let opt = InterfaceOptions`` ?? { name: null, };</code>
しかし、メリットもあります。これで、配列に何を追加するかがわかりました。
例 2:
<code class="language-javascript">let opt = { name: null, };</code>
これが好きですか?いいえ、この特定のオブジェクトのコード分析は中断されます。
しかし、次のようにすることもできます:
<code class="language-javascript">let opt = (() => null)() ?? { name: null, };</code>
すべての画像は保存され、元のテキストと同じ形式が使用されています。 画像の URL は直接処理できないため、元のテキストの /uploads/...
パスを保持しました。 これらのパスが環境に対して正しいことを確認してください。
以上がVanilla JavaScript と VS Code IntelliSense のインターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。