上級者向け:TypeScript モジュールの奥深さを探る - export と default export の詳細解説

2024-07-27

TypeScript の export と default export の違い

  • export: モジュールから他のモジュールへ変数、関数、クラスなどを公開するために使用します。
  • default export: モジュールからデフォルトでエクスポートする値を指定するために使用します。

使用方法

export:

export function add(a: number, b: number): number {
  return a + b;
}

export const message = "Hello, world!";

// 複数行にわたる場合
export class Person {
  constructor(public name: string, public age: number) {}
}

default export:

export default function multiply(a: number, b: number): number {
  return a * b;
}

// オブジェクトやクラスもデフォルトエクスポートできる
export default class Animal {
  constructor(public name: string) {}
}

インポート

import { add, message } from "./my-module";

const result = add(1, 2);
console.log(message);

// 別名でインポートすることも可能
import { add as sum, message } from "./my-module";
import MyModule from "./my-module";

const result = MyModule(1, 2);

// 別名でインポートすることも可能
import MyModule, { add as sum } from "./my-module";

使い分け

  • export: 複数の値を個別にエクスポートしたい場合に適しています。
  • default export: 1つの主要な値をエクスポートしたい場合に適しています。
  • モジュールから複数のデフォルトエクスポートすることはできません。
  • TypeScript 3.8 以降では、export default の代わりに export = を使用することができます。
  • export と default export は、モジュールから他のモジュールへ値を公開するために使用します。
  • それぞれ異なる使用方法とインポート方法があり、使い分けることが重要です。
  • TypeScript は進化し続けているため、最新の情報を確認することが重要です。



// my-module.ts

export function add(a: number, b: number): number {
  return a + b;
}

export const message = "Hello, world!";

// 複数行にわたる場合
export class Person {
  constructor(public name: string, public age: number) {}
}
// my-module.ts

export default function multiply(a: number, b: number): number {
  return a * b;
}

// オブジェクトやクラスもデフォルトエクスポートできる
export default class Animal {
  constructor(public name: string) {}
}
// index.ts

// export の場合
import { add, message } from "./my-module";

const result = add(1, 2);
console.log(message);

// 別名でインポートすることも可能
import { add as sum, message } from "./my-module";

// default export の場合
import MyModule from "./my-module";

const result = MyModule(1, 2);

// 別名でインポートすることも可能
import MyModule, { add as sum } from "./my-module";

実行

上記のコードをファイルに保存し、以下のコマンドを実行してコンパイルと実行ができます。

tsc index.ts
node index.js

出力結果

3
Hello, world!



TypeScript でモジュールを公開する他の方法

CommonJS

CommonJS は、JavaScript でモジュールを扱うための従来の方法です。require()module.exports を使用してモジュールをインポートとエクスポートします。

例:

// my-module.js

function add(a, b) {
  return a + b;
}

module.exports = add;

// index.js

const add = require("./my-module");

const result = add(1, 2);
console.log(result);

AMD

AMD (Asynchronous Module Definition) は、JavaScript で非同期モジュールを扱うための方法です。define()require() を使用してモジュールをインポートとエクスポートします。

// my-module.js

define(["require"], function(require) {
  function add(a, b) {
    return a + b;
  }

  return add;
});

// index.js

define(["require", "./my-module"], function(require, add) {
  const result = add(1, 2);
  console.log(result);
});

ES Modules

ES Modules は、JavaScript の標準的なモジュールシステムです。importexport を使用してモジュールをインポートとエクスポートします。

// my-module.ts

export function add(a: number, b: number): number {
  return a + b;
}

// index.ts

import { add } from "./my-module";

const result = add(1, 2);
console.log(result);
  • TypeScript でモジュールを公開するには、exportdefault export 以外にも、CommonJS、AMD、ES Modules などの方法があります。
  • どの方法を使用するかは、プロジェクトの要件や環境によって異なります。

javascript typescript ecmascript-6



Prototype を使用してテキストエリアを自動サイズ変更するサンプルコード

以下のものが必要です。テキストエリアを含む HTML ファイルHTML ファイルに Prototype ライブラリをインクルードします。テキストエリアに id 属性を設定します。以下の JavaScript コードを追加します。このコードは、以下の処理を行います。...


JavaScriptにおける数値検証 - IsNumeric()関数の代替方法

JavaScriptでは、入力された値が数値であるかどうかを検証する際に、isNaN()関数やNumber. isInteger()関数などを利用することが一般的です。しかし、これらの関数では小数点を含む数値を適切に検出できない場合があります。そこで、小数点を含む数値も正しく検証するために、IsNumeric()関数を実装することが有効です。...


jQueryによるHTML文字列のエスケープ: より詳細な解説とコード例

JavaScriptやjQueryでHTMLページに動的にコンテンツを追加する際、HTMLの特殊文字(<, >, &, など)をそのまま使用すると、意図しないHTML要素が生成される可能性があります。これを防ぐために、HTML文字列をエスケープする必要があります。...


JavaScriptフレームワーク:React vs Vue.js

JavaScriptは、Webページに動的な機能を追加するために使用されるプログラミング言語です。一方、jQueryはJavaScriptライブラリであり、JavaScriptでよく行う操作を簡略化するためのツールを提供します。jQueryを学ぶ場所...


JavaScriptにおける未定義オブジェクトプロパティ検出のコード例解説

JavaScriptでは、オブジェクトのプロパティが定義されていない場合、そのプロパティへのアクセスはundefinedを返します。この現象を検出して適切な処理を行うことが重要です。最も単純な方法は、プロパティの値を直接undefinedと比較することです。...



SQL SQL SQL SQL Amazon で見る



JavaScript、HTML、CSSでWebフォントを検出する方法

CSS font-family プロパティを使用するCSS font-family プロパティは、要素に適用されるフォントファミリーを指定するために使用されます。このプロパティを使用して、Webページで使用されているフォントのリストを取得できます。


JavaScript、HTML、およびポップアップを使用したブラウザのポップアップブロック検出方法

window. open 関数は、新しいウィンドウまたはタブを開きます。ブラウザがポップアップをブロックしている場合、この関数はエラーを生成します。このエラーを処理して、ポップアップがブロックされているかどうかを判断できます。window


JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法

このチュートリアルでは、JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法について説明します。方法HTML要素の背景色を設定するには、以下の3つの方法があります。style属性HTML要素のstyle属性を使用して、直接CSSプロパティを指定できます。


JavaScript オブジェクトの長さを取得する代替的な方法

JavaScriptにおけるオブジェクトは、プロパティとメソッドを持つデータ構造です。プロパティはデータの値を保持し、メソッドはオブジェクトに対して実行できる関数です。JavaScriptの標準的なオブジェクトには、一般的に「長さ」という概念はありません。これは、配列のようなインデックスベースのデータ構造ではないためです。


JavaScriptグラフ可視化ライブラリのコード例解説

JavaScriptは、ウェブブラウザ上で動作するプログラミング言語です。その中で、グラフの可視化を行うためのライブラリが数多く存在します。これらのライブラリは、データ構造やアルゴリズムを視覚的に表現することで、理解を深める助けとなります。