当前位置: 首页 > 知识库问答 >
问题:

如果在TypeScript中有一个类的接口,那么有没有理由有一个构造函数呢?

姬温文
2023-03-14

就像标题所说的,如果我的类allready已经实现了一个接口,有没有理由我应该有一个构造函数呢?在我看来这是重复的代码。

interface PersonInterface  {
    firstname: string;
    lastname: string;
    email: string;
}

class Person implements PersonInterface {

    firstname = "John";
    lastname = "Johnsson";
    email = "John.jonson@mail.com"

    PrintPerson() {
        console.log(`${this.firstname}, ${this.lastname}, ${this.email}`)
    }
}

共有2个答案

孟华晖
2023-03-14

通常,使用typescript,我们实现接口以使类的属性严格类型化。但是构造函数是自动为您生成的,如果您需要,可以对其进行修改。基本上,interface和constructor是OOP的两种不同的情况,因此没有理由使用构造函数,因为如果您用类实现了interface就会自动生成构造函数。

卫博学
2023-03-14

您的Person类有一个构造函数,它只是为您生成的一个构造函数。(它将这些值分配给公共属性。)没有理由有一个显式的,除非您需要做一些生成的构造函数不会为您做的事情。

(但这与实现接口无关。如果您的类没有implementsPersonInterface,情况也是如此。您实现接口的事实与是否需要构造函数无关。)

 类似资料:
  • 问题内容: 我在一个Activity中有一个IntentService,当我尝试调用该服务时,它将引发此错误,我发现这很奇怪,因为如果我声明了空的构造函数。 错误: AndroidManifest.xml 活动: 问题答案: 你是一个内部阶级。如果要将其保留在内部,请将其更改为static: 您可能需要阅读不同类型的嵌套类。google的第一个链接:http : //docs.oracle.com

  • 问题内容: 这是一段代码,作为示例,其余的只是方法(迷宫类的底部)。所以当实例化时,使用 和 这将打印出网格阵列。这是合法的吗?我认为所有类都需要构造函数,它如何打印出二维网格数组? 迷宫课: 问题答案: 不需要 显式 定义构造函数;但是,所有类都必须具有构造函数,如果不提供任何默认构造函数,则将生成默认的空构造函数: 请参见默认构造函数。

  • 问题内容: 在Java中,如果有接口: 然后实现是: 所以我的意思是,如果用户想用构造函数声明实例: 那不可能吗? 问题答案: 那不可能吗? 那就对了。你永远做不到 之后你必须选择一个 类 实现了接口(*) ,如: 为什么? 您可以将接口视为类的属性。比喻是形容词,例如“红色”。例如,创建一个红色的球()或一辆红色的汽车()是很有意义的,但是仅创建“红色”()没有任何意义(“红色代表 什么 ?”)

  • 我正在将我的一些Java代码转换为Kotlin,我不太明白如何实例化Kotlin代码中定义的接口。作为一个例子,我有一个接口(用Java代码定义): 然后在我的Kotlin代码中,我进一步实例化了这个接口: 而且效果很好。然而,当我将MyInterface转换为Kotlin时: 当我尝试实例化接口MyListener时,我得到了一条错误消息:-尽管在我看来除了语法之外没有什么变化。我是否误解了Ko

  • 我有一个(相当复杂的)数据类型: 现在我发现自己需要另一个数据类型…有两个构造函数。一个与的相同;另一个只存储一个。我有什么选择? 虽然这会起作用,但它也允许类似这样的东西,这是没有意义的。