gpt4 book ai didi

javascript - Typescript 是否在类构造函数中设置接口(interface)属性?

转载 作者:行者123 更新时间:2023-12-02 23:33:29 26 4
gpt4 key购买 nike

Typescript documentation on interfaces ,在“类类型”下,给出了以下示例:

interface ClockInterface {
currentTime: Date;
}

class Clock implements ClockInterface {
currentTime: Date = new Date();
constructor(h: number, m: number) { }
}

“class Clock...”下面以“currentTime:...”开头的行似乎暗示,如果我执行 var some = new Clock(),我的 something 变量将具有可访问的 currentTime 属性,即 something.currentTime

这让我很困惑,因为 the MDN documentation on Javascript Classes 中的以下行:

Instance properties must be defined inside of class methods

他们给出的例子:

class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}

这意味着以下代码将无效:

class Rectangle {
height: 23,
width: 45,
constructor(height, width) {
}
}

我的困惑:Typescript 文档中的示例代码没有在构造函数中分配 currentTime。他们的示例中是否缺少该步骤,或者他们的语法是否暗示“顺便说一句,直接在类上定义的属性在构造函数中神奇地被赋予了一个值?”如果是这种情况,如果您自己“手动”在构造函数中设置给定值,会发生什么情况?

最佳答案

class Clock implements ClockInterface {
currentTime: Date = new Date();
constructor(h: number, m: number) { }
}

运行构造函数,然后连接分配默认值的所有属性,以便在调用构造函数后分配 currentTime。

这允许类似的语法

class MyClass {
myProperty = this.myService.serviceProperty;

constructor(private myService: Myservice) {}
}

将构造函数参数标记为私有(private)、 protected 或公共(public)自动将它们分配为类的属性,而您不需要这样做

this.property = paramater

在构造函数中。 TypeScript 语法与 JavaScript 不同,但一旦习惯了它就会很棒。

关于javascript - Typescript 是否在类构造函数中设置接口(interface)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56386171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com