TypeScript でモジュールをインポートする
- TypeScript プロジェクトを作成する
-
TypeScript で
export
キーワードを使用する -
TypeScript で
import
キーワードを使用する - TypeScript で単一のオブジェクトをエクスポートおよびインポートする
- TypeScript で複数のオブジェクトをエクスポートおよびインポートする
- まとめ
TypeScript を使用してアプリケーションを開発することを学ぶとき、通常、相互に依存関係のない非常に単純なプログラムを作成します。
たとえば、メッセージをコンソールに記録するプログラムは 1 行だけで、1つのファイルに含まれています。 ただし、運用グレードのアプリケーションには複数のファイルが含まれており、これらのファイルには依存関係のあるコードが含まれています。
開発者は、これらの依存関係を実装するか、TypeScript モジュールを使用してサードパーティ ライブラリから取得できます。 TypeScript ドキュメント では、トップレベルの import
または export
を含む任意のファイルとしてモジュールを定義しています。
最上位の import
または export
を含まないファイルは、ファイルの外部からコードにアクセスできないことを意味します。 それ以外の場合、コードのスコープはグローバルです。
TypeScript プロジェクトを作成する
WebStorm
IDEA を開き、File
> New
> Project
を選択します。 開いたウィンドウで、左側にある Node.js
を選択し、右側にある New Project
というラベルの付いたウィンドウで、プロジェクト のプロジェクト名を
untitledから
typescript-modules に変更します。 場所
セクション。
最後に、Create
というラベルの付いたボタンを押して、プロジェクトを生成します。 ウィンドウが開いたら、View
> Tool Windows
> Terminal
を選択するか、キーボード ショートカット Alt+F12 を選択して、新しい Terminal
ウィンドウを開きます。
次のコマンドを使用して、アプリケーションの tsconfig.json
ファイルを作成します。
~/WebstormProjects/typescript-modules$ tsc --init
ファイルが生成されたら、ファイル内の構成が次のようになっていることを確認します。 構成をコピーして tsconfig.json
ファイルに貼り付けることもできます。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"noEmitOnError": true
}
}
TypeScript で export
キーワードを使用する
typescript-modules
フォルダーの下に EmailService.ts
という名前のファイルを作成し、次のコードをコピーしてファイルに貼り付けます。
export class User{
constructor(private name: String) {
this.name = name
}
public toString(): String{
return this.name
}
}
export class EmailService {
sendEmail(to: User,
from: User,
message: String): String {
return `message: ${message} from: ${from} to: ${to}`;
}
}
このファイルでは、それぞれ User
と EmailService
という名前の 2つのクラスを作成しました。 sendEmail()
メソッドは、電子メールの送信アクションをシミュレートします。
sendEmail()
メソッドは User
クラスを使用して、メールのメッセージを送受信するユーザーを表します。 ファイルの外部からクラスにアクセスできるようにするため、各クラスの前に export
キーワードを付けました。
TypeScript で import
キーワードを使用する
Main.ts
という名前のファイルを作成し、次のコードをコピーしてファイルに貼り付けます。
import {User, EmailService} from "./EmailService"
function main(){
let thisService = new EmailService();
console.log(thisService.sendEmail(
new User("john"),
new User("doe"),
"Happy Birthday"));
}
main();
このファイルでは、main()
という名前の関数を作成しました。この関数は、sendEmail()
メソッドによって返された文字列をコンソールに記録します。
このメソッドは、to
、from
、および message
の 3つのパラメーターを受け入れます。最初の 2つのパラメーターは User
型であることに注意してください。
このコードを実行するには、このチュートリアルに記載されている手順に従って新しいターミナル ウィンドウを開き、次のコマンドをコピーしてターミナルに貼り付け、Enter を押します。
~/WebstormProjects/typescript-modules$ tsc && node Main.js
このコマンドは、TypeScript ファイルを JavaScript ファイルにトランスパイルし、node
ランタイム環境を使用して Main.js
ファイルを実行します。 アプリケーションの出力が次のようになっていることを確認します。
message: Happy Birthday from: doe to: john
TypeScript で単一のオブジェクトをエクスポートおよびインポートする
User.ts
という名前のファイルを作成し、EmailService.ts
ファイル内の User
クラスをユーザー ファイルにカットします。 ユーザー ファイルのコードを次のように変更します。
class User{
constructor(private name: String) {
this.name = name
}
public toString(): String{
return this.name
}
}
export = User
このコードでは、クラス宣言から export
キーワードを削除し、クラス宣言の後に export = User
ステートメントを使用して定義しています。 これは、クラスであるこのモジュールから単一のオブジェクトをエクスポートしていることを示しています。
EmailService
も単一のオブジェクトをエクスポートする必要があるため、以下に示すように、クラスから export
キーワードを削除し、クラス宣言の後に追加します。
import User = require("./User");
class EmailService {
sendEmail(to: User,
from: User,
message: String): String {
return `message: ${message} from: ${from} to: ${to}`;
}
}
export = EmailService
EmailService
クラスは User
オブジェクトを使用するため、require()
関数を使用してクラスにインポートする必要があります。 これが、モジュールから単一のオブジェクトをインポートする方法であることに注意してください。
もう 1つの注意点は、このインポート アプローチでは、インポートされるオブジェクトがクラスであるため、new
キーワードを使用してクラスを直接呼び出すことができることです。これは関数、インターフェイスなどにも当てはまります。
行った変更が期待どおりに機能するかどうかをテストするために、以下に示すように、import
ステートメントにいくつかの小さな変更を加えて Main.ts
ファイルを再利用します。
import EmailService = require("./EmailService")
import User = require("./User")
function main(){
let newService = new EmailService();
console.log(newService.sendEmail(
new User("john"),
new User("doe"),
"Happy Birthday"));
}
main();
このファイルで行った唯一の変更は、require()
関数を使用して User.ts
モジュールと EmailService.ts
モジュールから単一のオブジェクトをインポートすることです。
前の例で使用したのと同じコマンドを使用してアプリケーションを実行し、出力が次のようになっていることを確認します。
message: Happy Birthday from: doe to: john
TypeScript で複数のオブジェクトをエクスポートおよびインポートする
前の例を変更して、最初の例で行ったように export
および import
ステートメントを使用します。 EmailService.ts
と User.ts
を含む 3つのファイルすべてで、単一オブジェクトのエクスポートとインポートを削除します。
2つのファイルのコードが次のようになっていることを確認します。
User.ts
:
export class User{
constructor(private name: String) {
this.name = name
}
public toString(): String{
return this.name
}
}
EmailService.ts
:
import {User} from "./User";
export class EmailService {
sendEmail(to: User,
from: User,
message: String): String {
return `message: ${message} from: ${from} to: ${to}`;
}
}
typescript-modules
フォルダーの下に AllExports.ts
という名前のファイルを作成し、次のコードをコピーしてファイルに貼り付けます。
export * from "./EmailService"
export * from "./User"
このファイルでは、EmailService.ts
ファイルと User.ts
ファイルの両方でエクスポートされたすべてのメンバー クラス、インターフェイス、関数を再エクスポートしています。 モジュールにはクラス宣言のみが含まれているため、このファイルでクラスをエクスポートしていることに注意してください。
このモジュールを使用して、単一の import
ステートメントを使用して Main.ts
ファイルに宣言されたすべてのモジュールをインポートします。 これを実現するには、Main.ts
ファイル コードが次のようになっていることを確認します。
import * as emailManager from "./AllExports"
function main(){
let newService = new emailManager.EmailService();
console.log(newService.sendEmail(
new emailManager.User("john"),
new emailManager.User("doe"),
"Happy Birthday"));
}
main();
構文 * as
を使用して AllExports.ts
ファイルで定義されたすべてのモジュールをインポートする方法に注意してください。 アスタリスク *
はコンパイラにファイル内のすべてのエクスポートをインポートするように指示しますが、as
キーワードはインポートされたエクスポートのカスタム オブジェクト名を作成します。
前の例では、new
キーワードを使用してオブジェクトを呼び出しました。 ただし、これはこの例では機能しません。
オブジェクトのメンバーの詳細にアクセスするには、オブジェクトのドット .
を使用する必要があります。 この場合、EmailService
および User
クラスです。
emailManager
オブジェクトで new
キーワードを使用しようとすると、This expression is not constructable
という警告が表示されます。 このコードを実行して、出力が次のようになっていることを確認します。
message: Happy Birthday from: doe to: john
まとめ
このチュートリアルでは、TypeScript でモジュールを操作する方法を説明しました。 取り上げるトピックには、export
および import
キーワードの使用と、単一および複数のオブジェクトのエクスポートとインポートが含まれます。
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub