1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

TypeScriptの学習で学んだことについて後日自分で振り返るためにまとめていきます。

TypeScript 学習記録
の続きです。

オブジェクト

オブジェクトリテラル記法

オブジェクトリテラル記法を用いてオブジェクトを定義する。

プロパティ

?(オプショナル)がついたものは、値があってもなくても良い。
readonlyがついたプロパティは最初だけ値を定義することができ、後から書き換えられない。

//オブジェクトリテラル記法
 let human: {
    name: string
    age: number
    readOnly bloodype :string
    gender? :string
  } = {
    name: 'tarou',
    age: 20,
    bloodype: 'A'
  }

//以下はただのオブジェクトで、プロパティが認識されない
    //   const human:object =  {
    //     name: "tarou"
    //     age: 20
    //   } 
    // human.name //エラー

インデックスシグネチャ

オブジェクトがあるプロパティを何度も使用する時に使う。
keyはstringまたはnumber

  const sample1: {
    [position: string]: string
  } = {
    'leader': 'Taro',
    'deputyLeader': 'Hanako'
  }

  sample1.member = 'Sho'

型エイリアス 型定義の再利用

型に名前をつけて宣言、再利用することができる

  type Membership = {
    name: string
    number: number
    gender: string
  }

  const member: Membership = {
    name : 'Taro',
    number:1,
    gender:'man'
  }

合併型(union)と交差型(intersection)

合併型はオブジェクトAまたはBのどちらかになれる
交差型はオブジェクトAとBの要素をすべて必ずもつ

  type union = A | B
  type intersection = A & B

配列とタプル

### 配列
合併型もできるけど、あまり使わない
TypeScriptは型推論もしてくれる

    const member: string[] = ['Taro', 'Hanako']
    const sample: (string | number)[] = ['あいうえお', 123]

タプル

配列よりも厳格な型定義
レストパラメータも使える

const member: [number, string] = [1, 'Taro']

イミュータブル(読み取り不可)の配列

配列はconstで宣言されても書き換え可能(ミュータブル)
イミュータブルにするために、readonlyをつける

const sample: readonly string[] = ['abc', 'あいう', 'efg']
//sample.push("かきく") エラーになる
//sample.[0] = 'hij' エラーになる

ジェネリック型

型の種類は違うが同じデータ構造のものを共通化する。
オブジェクト指向の多態性に該当する。

type SampleGeneric<T> = {
    (array: T[], value: T): T
  }

const SampleFunc: SampleGeneric<string> = (array, value) => {
return 'sample';
}

  // 完全な呼び出しシグネチャ(
  type SampleGeneric2 = {
    <T>(array: T[], value: T): T
    <U>(array: U[], value: U): U
  }
  // 呼び出しシグネチャの省略記法
  type SampleGeneric3<T> = (array: T[], value: T) => T
  type SampleGeneric4 = <T>(array: T[], value: T) => T

オブジェクト指向

・継承(インヘリタンス)
・カプセル化
・多態性(ポリモーフィズム)

クラスをまとめて、隠して、クラスを元にインスタンスをたくさん作ってく。
クラスがたこ焼き機で、インスタンスがたこ焼き。

○オブジェクト指向で用いる用語
・プロパティ
・メソッド
・コンストラクタ
・インスタンス

private…そのクラスのみでアクセス可能、インスタンスでも使える
protected…そのクラスとサブクラスのみ
public…デフォルト、どこからでもアクセス可能

抽象クラス…abstractがついたクラス、インスタンス化できず継承して用いるクラス

//クラス定義
class Sample {
    private name:string
    private num:number

    constructor(name: string, num: number) {
        this.name = name
        this.num = num
    }

} 

//インスタンス化
new Sample('Taro',1)    

abstract class SampleAbs {} //抽象クラス
class SampleAbs1 extends SampleAbs{}    //抽象クラスの継承

参考記事

トラハック 日本一わかりやすいTypeScript入門シリーズ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?