TypeScriptの基礎について
アプリケーション開発をする際、プログラミング言語としてJavaScriptの知識は必須になります。だが、JavaScriptは変数の型を自動で定義するため、いい加減なコードでも実行できることから、大規模開発には不向きだとされています。
そこで、TypeScriptが登場します。TypeScriptはそのようなJavaScriptの弱点を補った言語であるaltJSの一種であり、altJSの中で最も使われています。
そこで、今回、TypeScriptの基礎を書いていきます。
また、JavaScriptの基礎はわかっているものとします。
TypeScript学習の準備
1 まず、TypeScript Playgroundへ進んでください。
https://www.typescriptlang.org/play/index.html
2 以下のようにして実行してください。
左側にTypeScriptのコードを入力すると、右側にJavaScriptでのコードが表示されます。
ここで、このコードを実行するには、Runボタン(赤い四角で囲んだもの)をクリックしてください。
実行結果はGoogle Chromeの場合、ディベロッパーツールのconsoleタブより見られます。
すると、以下の画面にいきます。
ここで、Consoleと書かれている所をクリックすると、実行結果が見られます。
以上のようにして、TypeScriptを実行することができます。
初心者のうちは、短いコードを入力する所から始まるので、この方法で学習した方がいいかと思っています。
変数とデータ型について
変数とは、いわゆる値を保管しておくための入れ物です。
その際、変数であることはletを使って以下のように宣言します。
let 変数の名前 : データ型 = 初期値
ここで、変数に代入する値の種類は、数値や文字列等があり、変数に代入する値の種類をただ一つにしたい時、変数をラベリングします。そのラベルの事をデータ型といいます。
数値型: number
文字列型: string
任意の型: any
let data : string = "nemlog"
data = "shu"
console.log(data)
この場合はshuと表示されます。しかし、以下の場合は実行できません。
let data : string = "nemlog"
data = 100
console.log(data)
なぜならば、変数の中身は文字列で指定しているのに、数値を代入しているからです。
また、データ型や初期値を以下のようにして省略して書く事もできますが、これではTypeScriptを使う意味がないので、必ず書いてください。
let data = "nemlog"
data = "shu"
console.log(data)
以上の例文は、nemlogを文字列と認識して、dataのデータ型を文字列型として認識しています。
次の場合は、nemlogと結果が返ってきます。変数dataは、値の種類を問わず、代入できるようになっています。
let data ;
data = 4 ;
data = "nemlog"
console.log(data)
以上の2つの例はわかりにくいので、やめた方がいいでしょう。もし値を問わず変数に代入したい場合は、データ型は以下の例文のようにanyにした方がいいです。
let data : any = "nemlog"
data =100
console.log(data)
ここで、一度値を宣言したら、二度と代入できない入れ物を定数といい、以下のように宣言します。
const 定数の名前 : データ型 = 初期値
const z : number = 5;
z=3
console.log(z);
この場合は、zにはすでに5という数値が入っているため、3という値を入れる事は許されません。よって、エラーになります。
関数について
関数とは、ある処理をひとまとめにして書いたものであり、入力された値(引数)と出力された値(戻り値)のパイプ役となるものです。
戻り値ha、処理内容に書かれた処理を終わらせ、そして呼び出し先の関数が出力値として値となります。
ここでごはんに例えると、ごはんを炊く前の米が引数、炊飯器が関数、炊いた米が戻り値になります。
これはreturn文で書かれ、記述の仕方としては以下のようになります。
return 値(もしくは式)
以上を用いて、関数のことについて考えてみます。
基本的に以下のように定義します。
function 関数名(引数:引数のデータ型 , ・・・): 戻り値のデータ型 {
処理内容}
function ave(one:number , two:number):number {
return (one+two)/2 ;
}
console.log(ave(8,4)); #結果は6
また、関数を与えることで得られた値を以下のように記述することで、変数に代入することもできます。
let 変数 = function 関数名(引数:引数のデータ型 , ・・・): 戻り値のデータ型 {
処理内容}
let ave = function (one:number , two:number):number {
return (one+two)/2 ;
}
console.log(ave(8,4)); #結果は6
また、アロー(=>)を用いて書く事もできます。
(引数:引数のデータ型,・・・) => 戻り値のデータ型{
処理内容
}
let ave = (one:number , two:number):number => {
return (one+two)/2 ;
}
console.log(ave(8,4)); #結果は6
また、このように表現することもできます。
let 変数名:(引数:引数のデータ型,・・・) => 戻り値のデータ型 =
function(引数:引数のデータ型,・・・) => 戻り値のデータ型{
処理内容
};
let ave : (one:number , two:number)=> number =
function(one:number , two:number) : number {
return (one+two)/2 ;
}
console.log(ave(8,4)); #結果は6
配列について
① 配列
プリグラミングコードを書く際、変数をいくつも定義すると、コードが複雑になることがあります。そのときに役に立つのが配列です。配列は、複数の値をまとめて保管できる変数です。ここで定義した変数を配列名といい、以下のように記述します。ここで、要素とは、配列の中に入っている値の事をいいます。
let 配列名:要素のデータ型 =初期値
let data:string[ ] = [jaguar' , 'gimre' , 'hatchet' , 'broodierookie']
また、配列にはインデックス番号が割り振られていて、先頭より0、1、2と割り振られています。その定義した配列より値を表示したい場合は、以下のように記述します。
配列名[インデックス番号];
さっきの例文でhatchetを表示させたい場合は以下のようにします。
console.log(data[2]);
let data:string[ ] = [jaguar' , 'gimre' , 'hatchet' , 'broodierookie']
console.log(data[2]);
② 連想配列
配列には、文字列キーで管理することもできます。これを連想配列といいます。
これは、以下のようにして書きます。
let 配列名 { [ 任意の名前:インデックスのデータ型] : 値のデータ型 } = 初期値
ここで、初期値はこのようにして書きます。
キー : 値
ここで、配列の要素(値)を表示させたいときは、以下のようにします。
配列名.キー
let arr: { [index:string]: string } = {
'NEM' : 'ネム'
'SYMBOL' : 'シンボル'
'Catapult' : 'カタパルト'
};
console.log(arr.NEM); #結果はネム
③ 列挙型
配列は定数をまとめることもできます。それを列挙型といいます。
enum 列挙型の名前{定数,・・・}
この配列に入っている定数の値を取り出したい時は、以下のようにします。
let 任意の変数名:列挙型の名前 = 列挙型の変数名.定数の名前
enum xymcity{
Jag = 8,
Gim = 10,
Hat = 2
}
let ing: xymcity = xymcity.Jag
console.log(ing); #結果は8
④ タプル型
タプルとは、配列に異なるデータ型が混じっていた場合に使うデータ型です。
let 変数名 : [データ型1, データ型2, ・・・] = [値1, 値2, ・・・]
let data: [string, number, number]= ["apple", 10, 20];
console.log(data[0]); //結果はappleと表示
console.log(data[1]); //結果は10と表示
console.log(data[2]); //結果は20と表示
オブジェクト指向について
クラスについて
クラスとは、名前や属性といった情報(プロパティ)やプログラミング処理(メソッド)をひとつにまとめたものです。
それは、以下のようにして定義します。
class クラス名{
プロパティ名: プロパティのデータ型
・・・・
constructor(引数:データ型,・・・) {
処理内容
}
メソッド名(引数:データ型、・・・) : 戻り値のデータ型{
処理内容
}
}
class SmallAnimal {
// プロパティは名前: 型
animaltype: string;
// コストラクタ(省略可能)
constructor() {
this.animaltype = "ポメラニアン";
}
say() {
console.log(`${this.animalType}だけどMSの中に永らく居たBOM信者の全身の毛をむしりたい`);
}
}
const smallAnimal = new SmallAnimal();
smallAnimal.say();
// ポメラニアンだけどMSの中に永らく居たBOM信者の全身の毛をむしりたい
この例文は、( https://future-architect.github.io/typescript-guide/class.html )からの引用です。
アクセス制限について
クラス内のプロパティやメソッドのアクセスを制限することがTypeScriptではできます。
その際、以下のものを使います。これらはアクセス装飾子といいます。
Public:クラスの外からも自由にアクセスができる
protected:定義のあるクラスと子クラス以外からの操作を禁止
private:同一インスタンスからの操作のみを許可
class Person{
//name/ageプロパティを準備
private name:string;
private age:number;
//コンストラクター(プロパティを初期化)
constructor(name:string,age:number){
this.name=name;
this.age=age;
}
//publicはつけなくても同じ意味
public show():string{
//クラス内からはアクセス可能
return`${this.name}は${this.age}歳です。`;
}
}
let p = new Person('田中邦夫','64');
console.log(p.show()); //結果:田中邦夫は64歳です。
console.log(p.name); //結果:a.エラー(アクセスできない)
引用:Yoshihiro Yamada. Quick Master TypeScript Second Edition Sokushu (Japanese Edition) WingsProject. Kindle 版.
最後に
ここで、TypeScriptを学ぶにあたって、基本的な事を書きました。
実際は、この記事に書いている事だけでは本格的な開発はできませんし、もっと学ぶことがあります。
自分もまだ学習し始めたばかりだし、わからない事も多いです。
ぜひ、この記事をきっかけにTypeScriptの学習をしていただけたらいいなと思っています。
もっと学びたいひとは、このKindle本を参照!!(この記事も、この本を参考にしています)
速習 TypeScript 第2版 速習シリーズ 山田 祥寛
この記事が気に入ったらサポートをしてみませんか?