typescript練習帳

本書はtypescirptの使い方について書いて行きます。

704 views

クラス

kotlinからtypescriptに戻ると、ちょっとクラスの書き方がメダパニになった。
クラスのメンバ変数は、5行目で宣言しているが、宣言した変数は必ず初期化されないといけない。
初期化はコンストラクタで行えばよいが、このとき、メンバ変数にthisをつけること。
thisがないと、同じメンバ変数として認識されず、未初期化変数になってしまう。

import * as utils from "./utils";


class Field  {
    private field:Array<number>[];

    constructor(size:number=20) {
       this.field = utils.createArray2D(20, 20, 0);
    }
}

メソッドの引数にクラスを渡すときの注意点

メソッドに他のクラスを渡すときは、以下のように、引数の型にクラスを指定する。

setBlock(block:Block) {
}

しかし、インポート文をうまく書かないとややこしいことになるので注意。

ややこしい場合

import * as utils from "./utils";
import * as Block from "./Block";

class Field  {
    private field:Array<number>[];

    constructor(size:number=20) {
       this.field = utils.createArray2D(20, 20, 0);
    }

    setBlock(block:Block.Block) {

    }
}

ややこしいのは、11行目でblock:Block.Blockと重ねる箇所。
Block.tsのBlockクラスを呼べ、という意味なんだけど、これはダサい。

下のように、import文でクラスを取り込んでしまえば、11行目のように、素直な感じに書ける。
わかりやすい場合

import * as utils from "./utils";
import {Block}  from "./Block";

class Field  {
    private field:Array<number>[];

    constructor(size:number=20) {
       this.field = utils.createArray2D(20, 20, 0);
    }

    setBlock(block:Block) {

    }
}

Page 11 of 12.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626