本書は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/