JavaScript 寺子屋 15 / 型: number, array, object, function
Tweet型とは値の「種類」
前回説明したことですが、型というのは値の種類です。前回は 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
でチェックして、期待する型になるようにテストを書く
今日は以上です!