今日の参考コード

型とは値の「種類」

前回説明したことですが、型というのは値の種類です。前回は string = 文字列 という型を発見しました。

今回は、残りの JavaScript でよく見る number, array, object, function をチラ見していきます。

一気に書く

なんとなくは数字、配列、オブジェクト、関数のことはみなさん知っていると思いますので、今回はもうちゃっちゃと書いてしまいましょう。それで、あー本当に型があるんだなあ、ということを感じてください。

test.spec.js 値の型をテストする
import { getType } from "typechecker";

describe("type", () => {
  it("string", () => {
    const string = "hello world";
    const res = getType(string);
    expect(res).toEqual("string");
  });

  it("number", () => {
    const number = 1;
    const res = getType(number);
    expect(res).toEqual("number");
  });

  it("array", () => {
    const array = [1,2,3];
    const res = getType(array);
    expect(res).toEqual("array");
  });

  it("object", () => {
    const object = {
      name: 'nakanishi',
      age: 34
    };
    const res = getType(object);
    expect(res).toEqual("object");
  });

  it("function", () => {
    const func = () => 'hello'
    const res = getType(func);
    expect(res).toEqual("function");
  });
});

型が違うと何が違うの?

型がそれぞれ違うということはわかりましたが、そもそも型が違うと何が違うのか?疑問に思うことでしょう。

詳しくはおいおいやっていきますが、一番わかりやすい例だと + の処理が変わります。

型が違うと の役割が変わる
1 + 1 // これは number と number なので、足し算されて 2 になる
"1" + "1" // これは文字列と文字列なので、文字が連結されて "11" になる

「見た目」は同じ雰囲気ですが、数字なのか文字列なのかによって + の仕事が変わるわけですね。型が違うから この違いが起きるわけです。

こういうところで「型」が影響してきます。JavaScript ではあまり型は意識されませんが、それでもこういった処理の違いはみなさんもよくご存知ですよね。知らないうちに、感覚的には理解していたのです。

宿題

  • 変数に型が string, number, array, object, function になる値を入れる
  • その型を typechecker でチェックして、期待する型になるようにテストを書く

今日は以上です!