2016-08-05 3 views
1

以下のコードでは、変数をインタフェースタイプとして定義しようとしているときにステートメント(emp:IEmployee= { FirstName: "Saurabh", LastName: "Vats" };)でエラーが発生します。なぜTypeScriptは私にここでエラーを出すのですか?Typescript:インタフェースタイプとして変数タイプを定義しているときにエラーが発生しました

class Greeter { 
    element: HTMLElement; 
    span: HTMLElement; 
    timerToken: number; 
    constructor(element: HTMLElement) { 
     this.element = element; 
     this.element.innerHTML += "The time is: "; 
     this.span = document.createElement('span'); 
     this.element.appendChild(this.span); 
     this.span.innerText = new Date().toUTCString(); 
    } 

    start() { 
     this.timerToken = setInterval(() => this.span.innerHTML = new Date().toUTCString(), 500); 
    } 

    stop() { 
     clearTimeout(this.timerToken); 
    } 

    print(employee: IEmployee) { 
     console.log(employee.FirstName + employee.LastName); 

    } 

} 

interface IEmployee { 
    FirstName: string; 
    LastName: string; 
} 
window.onload =() => { 
    var el = document.getElementById('content'); 
    var greeter = new Greeter(el); 
    greeter.start(); 
    emp:IEmployee= { FirstName: "Saurabh", LastName: "Vats" }; 
    greeter.print(emp); 

}; 
+1

それはちょうど「エラー」あなたを与えるものではありません。特定のエラーメッセージが表示されます。 – str

+0

それは私にIEmployeeを見つけることができないエラーを与える –

+1

それは質問にされているはずです。また、エラーメッセージを言い直してはいけません。ちょうどあなたがそれを得る方法を正確に追加してください。 – str

答えて

2

あなたはキーワードが不足しています。

これは正しくありません。

emp:IEmployee= { FirstName: "Saurabh", LastName: "Vats" }; 

は、それは次のようになります。

let emp:IEmployee= { FirstName: "Saurabh", LastName: "Vats" }; 


しかし、何らかの理由で、あなたはそれグローバル変数にしたかったです、か? JavaScriptで

、あなたが書かれていた場合:

emp = { FirstName: "Saurabh", LastName: "Vats" }; 

あなたが実際にwindowオブジェクトにこれを追加することになります。あなたはまだtypescriptですでこれを行うことができます

、あなたはそれについて明確にする必要があります:

interface Window { 
    emp:IEmployee; 
} 

window.onload =() => { 
    var el = document.getElementById('content'); 
    var greeter = new Greeter(el); 
    greeter.start(); 
    window.emp = { FirstName: "Saurabh", LastName: "Vats" }; 
    greeter.print(emp); 
}; 
+0

letはうまく動作していますが、グローバル変数を作成することを期待していたletキーワードを与えていない場合はローカルスコープに変数を作成しますが、代わりにエラーが発生します –

+1

@saurabhvatsなぜ地球上でグローバルなぜあなたはES6の世界であなたがそうすることができると想像しますか? –

+0

私はtypescriptに新しいですので、javascriptはvarキーワードを指定しないとグローバル変数を作成するので、typescriptは同じように動作すると思いました。それは、 'let'キーワードなしで変数のエラーをスローするとその罰金 –

関連する問題