1
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?

【Typescript】構造的型付け

Last updated at Posted at 2024-01-25

はじめに

構造的型付けの意味を理解していなかったので、自分なりに噛み砕いてみました。

以下は本当に良い記事でした↓

構造的型付け

Typescriptは「構造的型付け」を型システムでは採用している。

例えば、カラスがいる。カラスを鳥という型かどうかをチェックしたい。
では、鳥は何を持って鳥とするのか?
クチバシがあること?羽があること?
そういったチェックを行う。

先に宣言し後で型チェック

  type Bird = {
    kuchibashi: boolean;
    wing: boolean;
  }

  const karasu = {
    kuchibashi: true,
    wing: true,
    age: 12
  }

  const bird: Bird = karasu

ここでは型Birdageに対応していないがエラーになることはないです。
なぜなら、型Birdspecies: string以外は言及しないから。だからageについては触れられない。
つまり、ここではカラスはBird型に当てはまるなら鳥だね!ってチェックしていることになります。

しかし、以下だとageが型Birdにないよ!って怒られます!

宣言するときに型をチェック

  type Bird = {
    kuchibashi: boolean;
    wing: boolean;
  }

  const karasu: Bird = {
    kuchibashi: true,
    wing: true,
    age: 12 //Object literal may only specify known properties, and 'age' does not exist in type 'Bird'.
  }

先ほどはカラスを先に宣言していたのでkarasuが型Birdかどうかをチェックしていました。
今回は、型Birdの変数を作ると宣言しているときなので、Bird型のを作るって言ったじゃん!ageとか聞いてないんだけど!!ってなります。

おわりに

間違っているところ気になるところがございましたら教えていただけますと嬉しいです。

1
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
1
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?