// abstractを使う場合は、クラス名の前にabstractをつける
abstract class Person {
name: string;
// 変数の前につける
readonly id: number = 31
// 引数設定時にアクセス指定子の後ろにつける
constructor(public readonly name: string){
}
// thisにPersonを設定する
greeting(this: Person){
console.log(this.name)
}
// abstractをつけることで、継承先に必ず定義しなければいけない関数になる
abstract explainJob(): void;
}
const quill = new Person("Quill");
const anotherQuill: {
greeting: quill.greeting
}
anotherQuill.greeting();
class Person {
private static instance: Person;
name: string;
readonly id: number = 31
constructor(public readonly name: string){
}
// staticなゲッターを用意する
static getInstance(){
if(Person.instance) return Person.instance;
Person.instance = new Person("Quill");
return Person.instance;
}
}
interface Human {
name: string
age: number;
}
const human: Human = {
name: "Quill",
age: 38
}
let developer: Human;
interface Human {
name: string
age: number;
greeting(message: string):void;
}
const human: Human = {
name: "Quill",
age: 38
greeting(message: string){
console.log(message)
}
}
let developer: Human;
// typeでもOK
interface Human {
name: string
age: number;
greeting(message: string):void;
}
// 上記の宣言で使っている変数や関数をクラスで定義する必要がある。
class Developer implements Human {
constructor(public name: string, public age: number)
greeting(message: string) {
console.log("hello")
}
}