Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Angularのための、TypeScript入門 その2

Typescript - Classes - Part 1

参考サイト

https://www.codingforentrepreneurs.com/projects/getting-started-typescript/

概要

  • typescriptのclassをゼロから作ってみる。
class SweetSweetBasil {
  constructor(name:string){ // constructorは、インスタンスがnew演算子で新規作成されたときに、実行される関数
    console.log("Hello " + name)
  }
}

let basil = new SweetSweetBasil("World") // newでclassのinstanceを作成する
let basil = new SweetSweetBasil("basil")
  • new 演算子は、コンストラクタ関数を持ったユーザ定義のインスタンスを作成する。つまりここでは、new SweetSweetBasilのインスタンスを作成する。SweetSweetBasilは、newでインスタンスが作成されると、SweetSweetBasil classのコンストラクタ関数を実行する。

  • SweetSweetBasilにcolor()メソッドを追記してみる。

class SweetSweetBasil {
  constructor(name:string){ // constructorは読み込みと同時に実行される
    console.log("Hello " + name)
  }
  color(){ // color メソッドを定義する。
    console.log("Green")
  }
}

let world = new SweetSweetBasil("World")
let basil = new SweetSweetBasil("basil")

basil.color()
world.color()

Typescript - Classes - Part 2

  • classの内容を少し複雑にしてみる。
class SweetSweetBasil {
  color: string; // 変数アノテーションを指定する。
  constructor(name:string, startColor:string){ // constructorは読み込みと同時に実行される
    console.log("Hello " + name)
    this.color = startColor //pythonで言うところの、self.color, new instance されたときに、this.colorにstartColorを代入する
  }
  getColor(){
    console.log("Green")
  }
}
let world = new SweetSweetBasil("World", "green")
let basil = new SweetSweetBasil("basil", "bright green")
basil.getColor()
world.getColor()

console.log(basil.color)
console.log(world.color)
  • classをextends で継承してみる。
class SweetSweetBasil {
  color: string;
  constructor(name:string, startColor:string){ // constructorは読み込みと同時に実行される
    console.log("Hello " + name)
    this.color = startColor //pythonで言うところの、self.color
  }
  getColor(){
    console.log("Green")
  }
}
let world = new SweetSweetBasil("World", "green")
let basil = new SweetSweetBasil("basil", "bright green")
basil.getColor()
world.getColor()

console.log(basil.color)
console.log(world.color)


class Basil extends SweetSweetBasil { // extendsで、classを継承
  constructor(name:string, startColor:string){ // constructorの引数は省略dけいない
    super(name, startColor) // super()で継承する必要あり、ここも省略できない
  }
}

let basil3 = new Basil("basil", "light green")

basil3.getColor()
console.log(basil3.color)
  • constructorと継承の昨日の確認をしてみる。
class SweetSweetBasil {
  color: string;
  constructor(name:string, startColor:string){
    console.log("Hello " + name)
    this.color = startColor  
  }
  getColor(){
    console.log(this.color) // ここをthis.color(self.color)に修正する。
  }
}


class Basil extends SweetSweetBasil {
  constructor(name:string, startColor:string){
    super(name, startColor)
  }
  setNewColor(newColor:string){
    this.color = newColor
  }
}

let basil3 = new Basil("basil", "light green")

basil3.getColor() //lightgreen になる。
basil3.setNewColor("Red") //Red
basil3.getColor() //red
console.log(basil3.color)