mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1228 文字
3 分
TypeScript入門
2024-11-04

TypeScript の基礎#

  • 型システム:変数と関数の型宣言(例として string, number, boolean など)。
  • インターフェース(Interfaces):データ構造を定義する方法。
  • クラス(Classes):クラスの定義と使用方法、コンストラクタやメソッドを含む。
  • デコレータ(Decorators):Angular ではコンポーネントやモジュールなどがデコレータで定義されており、例として @Component@NgModule など。

1. 基本の型#

TypeScript は以下の一般的な基本型をサポートします:

  • number:数値型、整数と浮動小数点数を含む。

    let age: number = 30
  • string:文字列型、テキストの保存に用いる。

    let name: string = "Alice";
  • boolean:真偽値型、値は true または false

    let isActive: boolean = true;
  • array:配列型、配列の要素の型を指定できます。

    let numbers: number[] = [1, 2, 3];
  • tuple:タプル型、固定長と型の配列に用いる。

    let user: [string, number] = ["Alice", 30]
  • enum:列挙型、名前付き定数の集合を定義します。

    enum Color { Red, Green, Blue }
    let color: Color = Color.Green;
  • any:任意型、不確定な変数型に適用しますが、頻繁な使用は推奨されません。

    let randomValue: any = "hello";
    randomValue = 5; // 他の型に再代入可能
  • void:戻り値がなく、通常は関数に戻り値がない場合に用います。

    function logMessage(): void {
    console.log("This is a message");
    }
  • null と undefined:変数が空または未定義であることを示します。

    let u: undefined = undefined;
    let n: null = null;

2. 型注釈#

変数、引数、戻り値に型注釈を追加することで、コード補完とエラーチェックを容易にします。

let name: string = "Alice";
function greet(name: string): string {
return `Hello, ${name}`;
}

3. インターフェース(Interfaces)#

インターフェースはオブジェクトの構造(どの属性とメソッドが含まれるか)を定義するため、コードの再利用性と柔軟性の実現に役立ちます。

interface Person {
name: string;
age: number;
greet(): string;
}
let alice: Person = {
name: "Alice",
age: 30,
greet() {
return `Hello, my name is ${this.name}`;
}
};

4. クラス(Classes)#

TypeScript はオブジェクト指向プログラミングをサポートし、クラスと継承の使用を許可します。クラスにはコンストラクター、属性、メソッドが含まれます。

class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
move(distance: number = 0) {
console.log(`${this.name} moved ${distance} meters.`);
}
}
let dog = new Animal("Dog");
dog.move(10);
  • アクセス修飾子

TypeScript はクラスメンバーのアクセス権を制御する3つのアクセス修飾子を提供します:

  • public:公開、デフォルトの修飾子で、どこからでもアクセスできます。
  • private:プライベート、クラス内部でのみアクセス可能。
  • protected:プロテクト、クラス内部および継承したサブクラスでアクセス可能。
class Person {
public name: string;
private age: number;
protected address: string;
constructor(name: string, age: number, address: string) {
this.name = name;
this.age = age;
this.address = address;
}
}

5. ジェネリクス(Generics)#

ジェネリクスは、関数・クラス・インターフェースを定義する際に型を指定せず、使用時に型を指定することを可能にします。これによりコードの再利用性が高まります。

function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("Hello"); // T が string に推論される

6. 型推論#

TypeScript はコードに基づいて自動的に変数の型を推論します。明示的な型宣言がない場合、型は代入に基づいて自動的に判断されます。

let x = 10; // TypeScript は自動的に x を number と推論

7. ユニオン型(Union Types)#

ユニオン型は、1つの変数が複数の型の値を受け取ることを許容します。| 記号を使用して定義します。

let value: string | number;
value = "Hello";
value = 42;

8. 型エイリアス(Type Aliases)#

type キーワードを使用して型のエイリアスを定義し、再利用を容易にします。

type ID = string | number;
let userId: ID = "123";

9. 型アサーション(Type Assertions)#

型アサーションは、コンパイラに特定の値の具体的な型を伝え、TypeScript よりも変数の型をよく知っている場合に適用します。

let someValue: any = "This is a string";
let strLength: number = (someValue as string).length;

10. デコレータ(Decorators)#

デコレータは TypeScript の高度な機能で、クラス・メソッド・プロパティにメタデータを適用することを許可します。Angular ではデコレータを使ってコンポーネントやモジュールなどを多用します。

function log(target: any, key: string) {
console.log(`${key} was called`);
}
class Person {
@log
greet() {
console.log("Hello!");
}
}

11. モジュールと名前空間#

  • モジュール:TypeScript は ES6 モジュールシステムをサポートしており、importexport を使ってモジュールのインポートとエクスポートを実現します。

    module.ts
    export const pi = 3.14;
    // main.ts
    import { pi } from './module';
    console.log(pi);
  • 名前空間:TypeScript はコードを整理するための名前空間(namespace)を提供します。大規模なアプリケーションに適しています。

    namespace Geometry {
    export function calculateArea(radius: number): number {
    return Math.PI * radius * radius;
    }
    }
    console.log(Geometry.calculateArea(5));
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

TypeScript入門
https://dreaife.tokyo/jp/posts/ts-basics-learn/
著者
dreaife
公開日
2024-11-04
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

関連した投稿 スマート
1
Angularベースのアニメ展示サイト+ログイン・登録(Cognito)
FRONTEND このプロジェクトは、Bangumi上のアニメを表示・検索するためのAngularベースのWebアプリで、ユーザー認証にCognitoを使用しています。GitHub Actionsによる自動ビルド・デプロイを通じて、GitHub Pagesへの自動デプロイにも対応しています。主な技術スタックはAngular 16、TypeScript、HTML、CSSで、ログイン、登録、検索、アニメカレンダーなどの機能を備えています。
2
Nest.jsとAngularベースの入札プラットフォーム(JestテストとCI/CD)
BACKEND このプロジェクトはNest.jsとAngularを基盤とした入札プラットフォームで、ユーザー登録、プロジェクト管理、入札管理などの機能を提供します。データベースにはPostgreSQLを使用し、SwaggerでAPIドキュメントを生成します。バックエンドではAWS Cognitoを用いた安全な認証を実装し、フロントエンドではプロジェクト表示と入札管理を行える使いやすいUIを構築しています。コード品質を担保するためにJestでテストを行い、GitHub ActionsでCI/CDも実現しています。
3
Java Atomic原子クラスと代表的な並行コンテナ
cs-base Javaの原子クラスと代表的な並行コンテナを紹介します。内容には、基本型向け原子クラス(AtomicInteger、AtomicLong、AtomicBooleanなど)、配列向け原子クラス、参照型向け原子クラス、オブジェクトフィールド更新用原子クラスが含まれます。さらに、ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、BlockingQueue、ConcurrentSkipListMapなどの並行コンテナの特性と利用シーンも詳しく解説します。
4
Javaリフレクション&プロキシ面接知識
cs-base リフレクションはフレームワークの中核機能であり、実行時にクラスを解析したりメソッドを呼び出したりできるため、Springなどで広く利用されています。利点は高い柔軟性ですが、安全性の問題や性能低下を招く可能性もあります。プロキシパターンはプロキシオブジェクトを通じて対象オブジェクトの機能を拡張するもので、静的プロキシと動的プロキシに分かれます。後者はより柔軟でフレームワークでよく使われます。JDK動的プロキシはインターフェース実装クラスのみを対象にでき、CGLIBは未実装クラスも代理可能です。動的プロキシは実行時にバイトコードを生成し、高い柔軟性と効率を提供します。
5
Java IO
cs-base Java IOは入出力ストリームの基本概念を扱い、バイトストリームと文字ストリームの分類、およびInputStream、OutputStream、Reader、Writerなどの代表的なクラスを含みます。バイトストリームは生のバイトデータを処理し、文字ストリームは文字データを処理します。バッファ付きストリームはIO回数を減らして性能を向上させます。アダプタパターンとデコレータパターンはJava IOストリームで広く使われ、機能拡張や異なるインターフェースの調整を行います。JavaのIOモデルには同期ブロッキングIO、ノンブロッキングIO、非同期IOがあり、それぞれ適した利用場面があります。

目次