2019年7月12日金曜日

開発環境

Programming TypeScript: Making Your JavaScript Applications Scale (Boris Cherny(著)、O'Reilly Media)のChapter 5(Classes and Interfaces)、Exercises(111)1の解答を求めてみる。

違いの一つとして、クラスからクラスは1つのみしか継承できないけど、インターフェースは幾つでも可能。

コード

class ClassA {
    say() {
        console.log("ClassA")
    }
}
interface InterfaceA {
    say1(): void
}
interface InterfaceB {
    say2(): void
}
// クラスは一つのみ継承可能
class ClassB extends ClassA {
    say1() {
        console.log("ClassB")
    }
}
// Interfaceは複数可能
class ClassC implements InterfaceA, InterfaceB {
    say1() {
        console.log("ClassC:InterfaceB")
    }
    say2() {
        console.log("ClassC: InterfaceB")
    }
}
// 1つのクラスと不空数のInterface
class ClassD extends ClassA implements InterfaceA, InterfaceB {
    say1(): void {
        console.log("ClassD: InterfaceA")
    }
    say2(): void {
        console.log("ClassD: InterfaceB")
    }
}

let a = new ClassA
let b = new ClassB
let c = new ClassC
let d = new ClassD

console.log("ClassA")
a.say()
console.log("ClassB")
b.say()
b.say1()
console.log("ClassC")
c.say1()
c.say2()
console.log("ClassD")
d.say()
d.say1()
d.say2()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)

$ ts-node sample1.ts 
ClassA
ClassA
ClassB
ClassA
ClassB
ClassC
ClassC:InterfaceB
ClassC: InterfaceB
ClassD
ClassA
ClassD: InterfaceA
ClassD: InterfaceB
$

0 コメント:

コメントを投稿