0
0

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文法(基礎編) オブジェクトとは何か?型の付け方

Posted at

オブジェクトとは何か?

この記事で紹介したプリミティブ型という基本的な7つの型以外のものを、
オブジェクトという。

他の言語だと、オブジェクト = クラスなどに結び付けられがちだが、
TypeScriptの場合、クラスだけにとどまらない、広い範囲を含むのが特徴だ。

代表的なものとしては、

const val = {
    obj1: 123,
    obj2: 'hello'
}
console.log(val.obj1) // 123と表示される

定義方法としては、
{}の中に、プロパティ名(キー):値と定義する。

オブジェクトの中身(プロパティ)を得ている、
console.log(val.obj1)の部分は、
プロパティアクセスに当たる。

ちなみにプロパティアクセスの方法としては、

console.log(val["obj1"]) // 123と表示される

のような記法もある。

いくつかのデータをまとめて管理したいときなどは、
オブジェクトが利用されることが多い。

なお、省略記法もあり、
例えば次のようにかける。

//省略しない書き方
const hello = 'Hello World'
const user1 = {
    hello: hello,
    age: 28,
}
console.log(user1.hello)
//省略記法
const hello = 'Hello World'
const user1 = {
    hello,
    age: 28,
}
console.log(user1.hello)

変数名とプロパティ名が同じ場合、
: 変数名の部分を省略できる。

オブジェクトの型

オブジェクトの型は、
例えば次のように記述する

const val: { 
    obj1: number,
    obj2: string
} = {
    obj1: 123,
    obj2: 'hello'
}
console.log(val.obj1) // 123と表示される

この場合、変数valの型は、
{ obj1: number, obj2: string }型となる。

複数の値に対してそれぞれ型を定義しているだけで、
一つ一つについては、プリミティブのときと同様。

ただ、記述が長くなるので、
type文を使うことが実際には多い。

type valobj = {
    obj1: number,
    obj2: string
}
const val: valobj = {
    obj1: 123,
    obj2: 'hello'
}
console.log(val.obj1)

type文は、上記のように、
型を宣言する構文である。

すでに存在する型に対して、
別名をつけることができる。

型引数

上記のtype文と関連して、
型引数という、type文の中でだけ有効な型として
扱えるものがある。

type valobj<T> = {
    obj1: number,
    obj2: T
}

上記の型引数を持つ型は、
ジェネリック型という。

上記の型を実際に使う場合は、
引数に型を指定する。

const val: valobj<string> = {
    obj1: 123,
    obj2: 'hello'
}

この場合、
stringが引数に渡されているので、
valobj型のTはstringとなり、
{ obj1: number, obj2: string }型と同様になる。

なお型引数を指定した場合、
呼び出し側で引数を指定しないと、
コンパイルエラーになる。

//型引数なしでは呼び出せない。
const val: valobj = {
    obj1: 123,
    obj2: 'hello'
}

そのため、省略可能なオプショナルな型引数にする場合は、
予めデフォルト値を定義しておけばいい。

type valobj<T = string> = {
    obj1: number,
    obj2: T
}
const val: valobj = {
    obj1: 123,
    obj2: 'hello'
}

この場合、型引数が指定されないと、
Tはstring型になる。

配列

配列は、[]で定義される、
複数のデータをまとめたデータ構造で、
オブジェクトの一種である。

const arr = ['hello', 'alice', 123]
console.log(arr)

配列の値にアクセスするには、

arr[0]

と番号を指定する。
0始まりからなので、先頭の要素は、
arr[0]というふうに取得する。

配列は、上記の番号、
0とか1といったプロパティ名を持つ、
オブジェクトともいえるので、
オブジェクトのプロパティアクセスの方法で
値を取得することができる。

配列の型

配列の型は、

const arr: string[] = ['hello', 'alice']

というふうに、型[]と記述する

もう一つの記法として、

const arr: Array<string> = ['hello', 'alice']

というのも存在する。こちらは組み込みのジェネリック型にあたる。

また、最初に定義したような、
複数の型が混ざった配列の場合は、
ユニオン型を使って、

const arr: (string | number)[] = ['hello', 'alice', 123]

というふうに記述する。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?