2015-12-11 62 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一般将由打字稿编译器或任何外壳库你处理使用。