2016-07-21 9 views
3

私はちょうどタイプスクリプトを開始していましたが、この問題を抱えていました。typecriptの2つのコードの違いは何ですか?

最初のコードにオブジェクトnameがあり、別のコード(最初のコードと同じ)に変数名がuserに変更されています。 問題は最初のコードはエラーを作成していますが、最初は正常に動作しています。

最初のコード(生産エラー)

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

function greeter(person: Person) { 
    return "Hello " + person.firstName + " " + person.lastName; 
} 

var name = {firstName: "Girdhari", lastName: "Agrawal"}; 
document.body.innerHTML = greeter(name); 

第二の符号(微細加工)

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

function greeter(person: Person) { 
    return "Hello " + person.firstName + " " + person.lastName; 
} 

var user = {firstName: "Girdhari", lastName: "Agrawal"}; 


document.body.innerHTML = greeter(user); 

これを理解するために私を助けてください。

編集

This is what I am getting while compiling first script 
greeter.ts(10,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'name' must be of type 'string', but here has type '{ firstname: string; lastName: string; }'. 
greeter.ts(13,35): error TS2345: Argument of type 'string' is not assignable to parameter of type 'Person'. 
+5

エラーは何ですか?また、動作しないバージョンでは目に見えない文字もチェックしてください。 –

+0

質問を編集 –

+3

おそらくあなたのコードのどこかに 'name'を文字列として定義しています。 – Igor

答えて

7

nameglobal variable defined in lib.d.tsWindow.name)であるので、それはです:

declare var name: string; 

あなたのコードは、グローバルスコープでもあるので、あなたはこのエラーを取得している理由があります。そのため、別の変数名を使用するのがその理由です。

関連する問題