TypeScript名前空間の説明

TypeScript名前空間の説明

序文:

TypeScript 1.5 より前では、ES6 のモジュールはまだ正式な標準ではなかったため、 namespace内部モジュールと呼ばれていました。ES6 が仕様を提案したとき、TypeScript 1.5 では正式に名前空間に変更され、 namespaceを使用して定義されました。

1. 定義と使用

1.1 定義

名前空間の定義は、変数、インターフェース、クラス、メソッドなどを定義できるオブジェクトを定義することと同じです。ただし、export キーワードを使用してこのコンテンツが外部から参照可能であることを指定しないと、外部からアクセスすることはできません。

次に、通常の検証用の .ts ファイルを定義します。実装コードは次のとおりです。

// 検証.ts
// namespace namespace Validation { を通じて Validation という名前の名前空間を作成します。
    // 正規表現を定義する const isLetterReg = /^[A-Za-z]+$/
    // ここで正規表現を定義します。前のものとの違いは、この正規表現が export const isNumberReg = /^[0-9]+$/ を通じてエクスポートされることです。
    // メソッドをエクスポートする export const checkLetter = (text: any) => {
        isLetterReg.test(テキスト) を返します
    }
}

上記のコードでは、 Validationという名前空間を定義し、その中に 2 つのプロパティと 1 つのメソッドを定義し、1 つのプロパティと 1 つのメソッドをエクスポートします (名前空間のエクスポートでは export キーワードが使用されます)。

1.2 使用

ファイル内の名前空間のコンテンツを使用するには、外部名前空間が使用されている場所に/// <reference path=“namespace.ts”/>を使用して導入します。先頭の 3 つのスラッシュ /// に注意し、次に path 属性で現在のファイルに対する名前空間ファイルの相対パスを指定します。具体的なコードは次のとおりです。

// インデックス.ts
/// <参照パス='validation.ts' />
isLetter = Validation.checkLetter('text') とします。
const reg = Validation.isNumberReg
console.log(文字です)
コンソール.log(reg)

最初の行の/// <reference path='validation.ts' />に注意してください。文法構造が間違っていてはいけません。間違っているとコンパイルが失敗します。

コンパイルコマンドは次のとおりです。

tsc --outFile src/index.js index.ts


outFileパラメータは出力ファイルを1つのファイルにマージするために使用されます

コンパイルされた index.js ファイルは次のとおりです。

// namespace var Validation を使用して、Validation という名前の名前空間を作成します。
(関数 (検証) {
    // 正規表現を定義します var isLetterReg = /^[A-Za-z]+$/;
    // ここで正規表現を定義します。前のものとの違いは、この正規表現がエクスポートを通じてエクスポートされることです。Validation.isNumberReg = /^[0-9]+$/;
    // メソッドをエクスポートする Validation.checkLetter = function (text) {
        isLetterReg.test(テキスト) を返します。
    };
})(検証 || (検証 = {}));
/// <参照パス='validation.ts' />
var isLetter = Validation.checkLetter('text');
var reg = Validation.isNumberReg;
console.log(文字数);
コンソールにログ出力します。

2. 複数のファイルに分割する

開発内容が増え続けるにつれて、同じ名前空間を複数のファイルに分割して個別にメンテナンスできるようになります。複数のファイルに分割しても、それらは 1 つの名前空間に属します。

サンプルコードは次のとおりです。

文字検証.ts

// 文字検証.ts
名前空間検証 {
    エクスポート const isLetterReg = /^[A-Za-z]+$/
    エクスポート const checkLetter = (テキスト: 任意) => {
        isLetterReg.test(テキスト) を返します
    }
}

数値検証.ts

// 数値検証.ts
名前空間検証 {
    エクスポート const isNumberReg = /^[0-9]+$/
    エクスポート const checkNumber = (テキスト: 任意) => {
        isNumberReg.test(テキスト) を返します。
    }
}

インデックス.ts

// インデックス.ts
/// <参照パス="./LetterValidation.ts"/>
/// <参照パス="./NumberValidation.ts"/>
isLetter = Validation.checkLetter('text') とします。
const reg = Validation.isNumberReg
console.log(文字です)

コマンドラインを使用してコンパイルします。

tsc --outFile src/index.js index.ts


最終的にコンパイルされた index.js コードは次のようになります。

// 文字検証.ts
var 検証;
(関数 (検証) {
    Validation.isLetterReg = /^[A-Za-z]+$/;
    Validation.checkLetter = 関数 (テキスト) {
        Validation.isLetterReg.test(text) を返します。
    };
})(検証 || (検証 = {}));
// 数値検証.ts
var 検証;
(関数 (検証) {
    Validation.isNumberReg = /^[0-9]+$/;
    Validation.checkNumber = 関数 (テキスト) {
        Validation.isNumberReg.test(text) を返します。
    };
})(検証 || (検証 = {}));
/// <参照パス="./LetterValidation.ts"/>
/// <参照パス="./NumberValidation.ts"/>
var isLetter = Validation.checkLetter('text');
var reg = Validation.isNumberReg;
console.log(文字数);

コンパイル結果から、最初にLetterValidation.tsファイルを導入し、次にNumberValidation.tsファイルを導入したことがわかります。最終的なコンパイル結果も、導入した順序でコンパイルされています。

3. エイリアス

エイリアスは、名前空間の操作を簡素化する方法です。構文は、import キーワードを使用することです。使用方法は次のとおりです。

インポートq = xyz


このメソッドは、親モジュールのimport x = require('name')構文と混同しないように注意してください。ここでの構文は、指定されたシンボルのエイリアスを作成します。このメソッドは、モジュールにインポートされたオブジェクトを含む任意の識別子のエイリアスを作成するために使用できます。

// 名前空間を定義する namespace Shapes {
    // 名前空間にサブ名前空間を定義してエクスポートする export namespace Polygons {
        エクスポートクラス Triangle {}
        クラス Square をエクスポートします {}
    }
}
// インポート構文を使用してエクスポートされたサブ名前空間の名前を polygons に変更します
インポートポリゴン = Shapes.Polygons
// エクスポートされた名前空間から Square クラスをインスタンス化します。let sq = new polygons.Square()

この例から、 importキーワードを使用して名前空間内の出力要素のエイリアスを定義すると、より深いレベルで属性を取得するコストを削減できることがわかります。

TypeScript名前空間に関するこの記事はこれで終わりです。TypeScript 名前空間の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • TypeScript名前空間の簡単な分析
  • TypeScript 名前空間のマージの説明

<<:  IE6 で JS エラーが発生し、CSS が適用されない HTML エンコードの問題の解決策

>>:  CSS3 のディスプレイのグリッドレイアウトとフレックスレイアウトの詳細な説明

推薦する

階層化されたピラミッドを実現するための HTML+CSS の例

この記事では主に、HTML+CSS で階層化ピラミッドを実装する例を紹介し、皆さんと共有します。詳細...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...

Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...

Linux での MongoDB のインストールに関するチュートリアル

MongoDB はクロスプラットフォームであり、Windows と Linux の両方にインストール...

JSON.stringify の簡易版の実装とその 6 つの主要機能の詳細な説明

目次序文JSON.stringify の 6 つの機能特集1特集2特集3特集4特集5特集6手動で文字...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

設定ファイルを変更した後、操作を再開します

余計なことは言わないで、コードだけ見てみましょう〜 # docker-compose をダウン # ...

MySQLで重複データを削除する詳細な例

MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

Vue プロジェクトをパッケージ化して Apache サーバーにデプロイする手順

開発環境では、vue プロジェクトは、ローカルで Express サーバーを構築することをベースにし...

Tomcatサーバーのセキュリティ設定方法

Tomcat は、Java Community Process を通じて Sun が開発した、広く使...

MySQL 8.0.20 Window10無料インストール版設定とNavicat管理チュートリアルグラフィック詳細説明

1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...

デザイナーが再びハマーの公式サイトに不満を述べる

昨年、この公開書簡は大ヒットし、羅永浩氏を驚かせた。今日、著者が新しい章を発表するとは思ってもみなか...