2015-12-11 97 views
-3

我想知道如何將下面的代碼片段轉換爲Typescript。我正在學習Angular2,並且對打字稿很新穎。將一個類從javascript轉換爲typescript

在JS,我們可以有一個這樣的iife(我只是隨機覺得在我腦海裏的東西,並使用下面的代碼片段,以表達我的思想)

(function(){ 
record.question = function(){ 
    var charLength = 1, 
     author = "", 
     foo = fooWoo 
     voteCount= 0; 

    function question(g){ 
     //do something, oh yeah! 
    } 

    question.foo = function(x){ 
     foo = x; 
     return question; 
    } 

    question.charLength = function(x){ 
     //do some setup 
     return question; 
    } 

    question.author = function(x){ 
     //give me the name of author 
     return author; 
    } 

    question.voteCount = function(x){ 
     //retrieve vote count 
     return voteCount; 
    } 

    return question; 
}; 

function fooWoo(d){ 

} 
})(); 

然後我在其他的js文件,我可以通過寫這樣的東西直接使用:

var q = record.question(); 

如何在TypeScript中編寫此代碼?有任何想法嗎?提前致謝!

+0

使用你的基本本能來創建一個像任何其他面向對象的語言的類;) –

+0

@forgivenson你看到我說js有類的眼睛.... – catlovespurple

+0

忽略討論中的其他噪聲(我不同意。 。你可以使用你想使用的東西,我應該有幫助的原因)。你能否請*發佈*有效* JS讓我給你*潛在的TypeScript *。 – basarat

回答

1

有時候可以通過新的語法來了解某些熟悉的內容以幫助理解。因此,這裏是它會是什麼樣子或多或少

class Question { 
    private charLength:number = 1; 
    private author:string = ""; 
    private foo:FooWoo; 

    constructor(
    private fp : FooWoo, 
    private g:any){ 
    //give me the name of author 
    }  

    foo(x){ 
    this.foo = x; 
    return this; 
    } 

    charLength(x){ 
    //do some setup 
    return this; 
    } 

    author(x){ 
    //give me the name of author 
    return this.author; 
    } 

    voteCount(x){ 
    //retrieve vote count 
    return this.voteCount; 
    } 
} 

這樣,你會實例化這個類是這樣的:

var q = new Question(new FooWoo(), "whatever g is"); 

的iife一般將由打字稿編譯器或任何外殼庫你處理使用。