Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将js函数构造函数转换为typescript?_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 如何将js函数构造函数转换为typescript?

Javascript 如何将js函数构造函数转换为typescript?,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在从js转到typescript,我有一些挑战 我需要将构造函数转换为与typescript等价的函数 js中的函数如下所示: export default function(address) { var self = this ; self.address = address; self.init = function(){ //some code } self.onClick = function() { // some code } }

我正在从js转到typescript,我有一些挑战

我需要将构造函数转换为与typescript等价的函数

js中的函数如下所示:

export default function(address) {
  var self = this ;
  self.address = address;
  
  self.init = function(){
    //some code
  }

  self.onClick = function() {
   // some code
  }
}

我试图转换它,但它抱怨
这个
关键字。(缺膏)

我计划在react组件内部调用它,从另一个文件调用,如下所示:
新地址(如有)(
此处的地址


我对
这个
有问题,所以我没有检查原型函数是否也能工作。

您可以创建一个类并向其中添加方法

注意:TS类中的所有方法都指向原型,属性指向对象。您甚至可以定义一个静态方法,它类似于在ES5中将方法添加到函数中

导出默认类SetAddress{
构造函数(公共只读地址:字符串){}
public init():void{}
public onClick(事件:HTMLEventAction):void{}
}
你甚至可以在测试。您必须将目标版本设置为ES5


您可以使用类声明语法:

export default class Address{
    constructor({address}:Object){
       this.address : String = address;
    }

    init():void{ // or your type of return
      // some code
    }

    onClick():void{ // or your type of return
      // some code
    }
}

这不是完整的代码,只是一个片段。现在我什么都不退,这就是我添加void的原因。如果你热衷于使用构造函数函数,你也可以这样做——这是一个固执己见的评论,但接受对象的构造函数违背了拥有object的目的。那么这是否意味着它应该是object以外的任何东西呢?@Rajesh复制构造函数模式正是使用了该模式,在javascript中,它非常有用注释来创建一个类实例,方法是传入一个带有配置数据或属性的对象,而不是向构造函数中添加几十个参数。我的观点是,如果您有一个构造函数,您应该期望单个值。类似于
地址(buildingName:string,area:string,city:string,country:string){}
。传递对象意味着您可以传递anything@Andreas_D认可的。即使我使用它们,但使用起来还是不舒服。关键是,使用
Partial
不会指定缺少什么。所以你回到默认值。是的,这是一种常用的方法,但这仅仅是因为我们向一个类型添加了很多属性,使用传统的构造函数变得单调乏味。但对于较小的类,我仍然更喜欢使用传统的构造函数。我不知道有一个操场。所以,如果我理解正确的话,似乎我必须上一节课。@Theoizaris正确。在面向对象系统中,没有类就没有构造函数。您有类或原始数据类型这是错误的!JavaScript类和构造函数是ECMAScript的两个不同但相似的特性。看见
export default class Address{
    constructor({address}:Object){
       this.address : String = address;
    }

    init():void{ // or your type of return
      // some code
    }

    onClick():void{ // or your type of return
      // some code
    }
}