Next.js と TypeScript で、変数の使い方を学ぶ

TwitterFacebookHatena

TL;DR

今回は、TypeScript を用いた変数の実装方法について解説します。Next.js のフレームワークを使い、実践的なアプリケーションの中でどのように変数を扱うのかを学びます。

開発環境 バージョン
Next.js 13.4.3
TypeScript 5.0.4
Emotion 11.11.0
React 18.2.0

変数の実装

変数の宣言には、基本的に、const を使います。変数名の後に、: 型名 を付けることで、変数の型を指定することができます。const はコンスタント(定数)の略で、変数の値を変更できないことを意味します。一度代入されると再代入できません。

TypeScript では主に letconstvar の 3 つのキーワードを使って変数を宣言します。これらにはそれぞれ異なる特性と使い方があります。

let userName: string = 'John Doe'
const birthYear: number = 1998
var isMember: boolean = true

上記のコードでは、それぞれのキーワードを使って変数を宣言し、初期値を設定しています。

let の使い方

let を使って宣言した変数は、後で値を変更することができます。また、let はブロックスコープを持つため、その変数は宣言されたブロック内でのみアクセス可能です。

let age: number = 20
age = 21 // OK

const の使い方

一方、const を使って宣言した変数は、再代入が不可能な定数となります。これもブロックスコープを持つため、宣言されたブロック内でのみアクセス可能です。

const country: string = 'Japan'
country = 'USA' // Error! `const`変数は再代入できません

var の使い方

最後に、var を使って宣言した変数も、値の変更が可能です。しかし、var は関数スコープを持つため、宣言された関数内でのみアクセス可能となります。この挙動は JavaScript 由来で、現代の開発では letconst の使用が推奨されます。

var city: string = 'Tokyo'
city = 'Kyoto' // OK

以上が TypeScript の変数宣言の基本的なパターンです。実際には、型推論や型アノテーション、オブジェクト型、配列型など、より高度な概念も含まれますが、これらの基本を理解することが第一歩となります。

プリミティブ型

プリミティブとは、プログラミング言語において、基本的な値のことを指します。TypeScript の値は、プリミティブとオブジェクトの 2 つのカテゴリに分類されます。プリミティブは、原始的なという意味です。

TypeScript では JavaScript のプリミティブ型を拡張し、より強力な型システムを提供しています。以下にプリミティブ型とその説明を表にまとめました。

説明
boolean 真偽値(true または false)を表す型です。
number 数値を表す型で、整数値や浮動小数点数値を表現します。JavaScript と同様に、TypeScript の全ての数値は浮動小数点値です。
string 文字列を表す型で、テキストデータを表現します。
null 値が存在しないことを表す型です。通常、変数が意図的に値を持たない場合に使用します。
undefined 値が未定義であることを表す型です。値が設定されていない変数のデフォルトの値です。
symbol ES6 で導入された新しいプリミティブ型で、一意で不変の値を表現します。

これらの型を使用することで、変数が取りうる値の範囲を制限し、コードの安全性を向上させることができます。

それぞれの型の使用例を以下に示します。

let isCompleted: boolean = false
let count: number = 10
let username: string = 'John Doe'
let nothing: null = null
let notAssigned: undefined = undefined
let uniqueKey: symbol = Symbol('key')

以上のように、TypeScript では変数の宣言時に型を明示することが一般的です。これにより、その変数がどのようなデータを扱うことができるかが明確になり、コードの可読性や安全性が向上します。また、IDE の型補完機能を最大限に活用することもできます。

Next.js での変数の実装

TypeScript の型システムを用いて Next.js プロジェクト内で変数を正しく扱うことは重要です。以下に例としてpages/index.tsxファイルに追加するコードを示します。

// pages/index.tsx

type User = {
  name: string
  age: number
}

const IndexPage = () => {
  const user: User = {
    name: 'John Doe',
    age: 25,
  }

  return (
    <div>
      <h1>Hello, {user.name}!</h1>
      <p>You are {user.age} years old.</p>
    </div>
  )
}

export default IndexPage

コード解説

上述したソースコードは、TypeScript の変数をどのように宣言し、どのように扱うかを簡単に示しています。これをもう少し詳しく見てみましょう。

まず、ユーザー情報を保持するための新しい型 User を作成しています。これは、名前と年齢をプロパティとして持つオブジェクト型です。

type User = {
  name: string
  age: number
}

次に、User 型の変数 user を宣言し、初期値として具体的なユーザー情報を設定します。

const user: User = {
  name: 'John Doe',
  age: 25,
}

これにより、user 変数は TypeScript の型システムにより安全に扱うことができます。name プロパティは文字列で、age プロパティは数値であることが保証されます。

最後に、user 変数の情報を HTML 要素に描画します。

return (
  <div>
    <h1>Hello, {user.name}!</h1>
    <p>You are {user.age} years old.</p>
  </div>
)

これらのコードを組み合わせることで、TypeScript の強力な型システムを活用しながら、Next.js のアプリケーションで変数を安全に扱うことができます。

メリット

このように TypeScript を使用すると、以下のようなメリットがあります。

  • 変数の型を明示的に指定することで、予期せぬエラーを防ぐことができます。
  • 型が明確になることで、コードの可読性が向上します。
  • IDE のオートコンプリート機能を活用でき、開発効率が向上します。

以上が Next.js と TypeScript を用いて変数を扱う基本的な方法です。さらに深く学びたい場合は、公式ドキュメントを参照すると良いでしょう。コードを書いて試すことで、理解が深まることでしょう。

Next.js と TypeScript で、変数の使い方を学ぶ