Javascript 如何将js函数构造函数转换为typescript?
我正在从js转到typescript,我有一些挑战 我需要将构造函数转换为与typescript等价的函数 js中的函数如下所示: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 } }
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
}
}