TypeScript の Import Type 機能

David Mbochi Njonge 2023年6月21日
  1. TypeScript でカスタム型を定義する
  2. import type を使用して、TypeScript でカスタム型をインポートする
TypeScript の Import Type 機能

TypeScript は、主に Web アプリケーションの開発に使用されるプログラミング言語であり、JavaScript のスーパーセットです。

この言語は主に Angular などのフレームワークで使用されます。 TypeScript には、プログラミングで活用できるプリミティブ データ型と非プリミティブ データ型があります。

通常、カスタム型を定義するアプリケーションの開発は避けられません。 これらのカスタム タイプは、他のアプリケーション モジュールで使用するために定義されています。

このチュートリアルでは、これらのカスタム タイプをモジュールに含める方法を説明します。 これらのカスタム タイプは、import type および import メソッドを使用してアプリケーションに含めることができます。

次のフェーズでは、これらの方法について詳しく説明します。

TypeScript でカスタム型を定義する

Visual Studio Code ソフトウェアに移動し、export-import-type という名前の新しいフォルダーを作成するか、任意の名前を使用します。

フォルダーの下に foo.ts という名前のファイルを作成します。 次のコードをコピーしてファイルに貼り付けます。

export type Employee = {
    firstName: string
    lastName: string
    email: string
}

export function logEmployee(employee: Employee){
    return employee;
}

export type Account = {
    username: string
    password: string
}

export function logAccount(account: Account){
   return account
}

以下は、foo.ts ファイルで定義されているカスタム タイプです。 すべてのカスタム タイプは export キーワードを使用して、ファイル外の別のモジュールがそれらにアクセスできることを示します。

Employee タイプは、firstNamelastNameemail の 3つのプロパティを定義します。 logEmployee() メソッドはタイプ Employee パラメータを受け入れ、従業員の詳細をコンソールに記録します。

Account タイプは、usernamepassword の 2つのプロパティを定義します。 logAccount() メソッドは Account 型のパラメーターを受け取り、アカウントの詳細をコンソールに記録します。

import type を使用して、TypeScript でカスタム型をインポートする

同じフォルダーの下に bar.ts という名前のファイルを作成します。 次のコードをコピーしてファイルに貼り付けます。

import type {Employee, Account} from "./foo"
import {logEmployee, logAccount} from "./foo"

function logEmployeeTwice(employee: Employee){
    console.log(logEmployee(employee))
    console.log(logEmployee(employee))
}

let employee: Employee ={
    firstName: "david",
    lastName: "mbochi",
    email: "david@gmail.com"
}

logEmployeeTwice(employee)

function logUserAccount(account: Account){
    console.log(logAccount(account))
}

let account: Account={
    username: "johndoe",
    password: "@john123"
}

logUserAccount(account)

上記のコードでは、import type アプローチを使用して、型宣言と注釈に使用できる宣言をインポートしました。

import アプローチを使用して値要素をインポートしました。 これは、2つの方法で使用する必要がある既定の規則です。

値要素で import type を使用しようとすると、次のエラーが発生します。

import type {logEmployee, logAccount} from "./foo"

エラー:

'logEmployee' cannot be used as a value because it was imported using 'import type'.ts(1361)
bar.ts(2, 14): 'logEmployee' was imported here.

'logAccount' cannot be used as a value because it was imported using 'import type'.ts(1361)
bar.ts(2, 27): 'logAccount' was imported here.

次のコマンドを使用して、tsconfig.json ファイルを生成し、TypeScript 構成を追加します。

david@david-HP-ProBook-6470b:~/Documents/export-import-type$ tsc init

生成された tsconfig.json ファイルに次の構成プロパティがあることを確認します。

{
    "compilerOptions":{
        "target": "es5",
        "noEmitOnError":true
    }
}

次のコマンドを使用して、すべての TypeScript ファイルを JavaScript にトランスパイルします。

david@david-HP-ProBook-6470b:~/Documents/export-import-type$ tsc

次のコマンドを使用して、node を使用して bar.js ファイルを実行します。

david@david-HP-ProBook-6470b:~/Documents/export-import-type$ node bar.js

出力:

{ firstName: 'david', lastName: 'mbochi', email: 'david@gmail.com' }
{ firstName: 'david', lastName: 'mbochi', email: 'david@gmail.com' }
{ username: 'johndoe', password: '@john123' }
David Mbochi Njonge avatar David Mbochi Njonge avatar

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

関連記事 - TypeScript Import