2017-07-12 7 views
1

私はTypeScriptを初めて使用しています。私が下のコードでしたいのは、文書 "Hello Jonh Lennon"に書くことだけです。しかし、私はrun this in the browser(HTMLページで)、 "Hello [object Object]"と書いていますが、何が間違っていますか?クラスは[オブジェクト]をレンダリングしますか?

class Student{ 
    fullname: string; 
    constructor(public firstName, public lastName) { 
     this.fullname = firstName + '' + lastName; 
    } 
} 

interface IPerson{ 
    firstName: string; 
    lastName: string; 
} 

function say(person: IPerson){ 
    return "Hello " + person; 
} 

var user = new Student("Jonh", "Lennon"); 

document.write(say(user)); 

答えて

2

[object Object]は、javascriptがオブジェクトを文字列に強制する必要がある場合のデフォルトの動作です。 return "Hello " + person;の場合、javascriptは+演算子を認識し、personを文字列に変換して変換する必要があることを認識します。あなたのIPersonインターフェイスが間違ってここで使用されているように見える、また

function say(person: IPerson){ 
    return "Hello " + person.fullname; 
} 
+0

は何あなたの代わりに欲しいのはこれです。 Studentが 'fullname'プロパティを公開するだけなので、' Student'は 'IPerson'ではありません。 – AnilRedshift

関連する問題