2016-11-16 5 views
0

インターフェイスを使用/実装するC#の方法を模倣する方法を模索しています。要するに、私は次のコードを複製しようとしている:Typescriptクラスは、インプリメンテーションの代わりにInterfaceをタイプとして使用します。

interface EBook { 
    function read(); 
} 

class EBookReader { 

    private $book; 

    function __construct(EBook $book) { 
     $this->book = $book; 
    } 

    function read() { 
     return $this->book->read(); 
    } 

} 

class PDFBook implements EBook { 

    function read() { 
     return "reading a pdf book."; 
    } 
} 

class MobiBook implements EBook { 

    function read() { 
     return "reading a mobi book."; 
    } 
} 

道具を使用して正常に動作しますが、私はタイプとして電子ブックを使用してのクラスEBookReaderの方法を模倣することはできません。私のコードのモックアップでcodepen

http://codepen.io/Ornhoj/pen/gLMELX?editors=0012

答えて

2

大文字と小文字が区別されるタイプ

として電子ブックを使用して。

interface IEBook { 
    read(); 
} 

class EBookReader { 
    book: IEBook; 

    constructor(book: IEBook) { 
     this.book = book; 
    } 

    read() { 
     this.book.read(); 
    } 

} 

class PDFBook implements IEBook { 
    read() { 
     console.log("reading a pdf book."); 
    } 
} 

class MobiBook implements IEBook { 
    read() { 
     console.log("reading a mobi book."); 
    } 
} 
var pdf = new PDFBook(); 
var reader = new EBookReader(pdf); 
reader.read(); 

試験このコードin the playground

+0

私は1日半の間、私を抱かせてくれたシンプルな大文字と小文字を区別したエラーです。 +1と正しい答えが与えられた。 –

関連する問題