嗨,我是 TypeScript 的新手,我来自 C# 和 JavaScript 背景。我正在尝试创建一种方法,允许我创建类似于我们在 C# 中可以做的类模型。
这是我尝试过的:
export class DonutChartModel {
dimension: number;
innerRadius: number;
backgroundClass: string;
backgroundOpacity: number;
}
我希望这会生成一个 JavaScript 模型来公开声明的属性,但这只会生成一个没有声明属性的函数 DonutChartModel
。
查看文档后,我注意到为了公开属性,我必须添加一个构造函数并从那里初始化属性。虽然这可能有效,但它无助于每个模型可能有 20 个或更多属性的情况,因为在我看来,初始化可能看起来很笨拙,而且它还会降低可读性。
我希望有一种方法可以在不传递构造函数参数的情况下做这样的事情:
var model = new DonutChartModel();
model.dimension = 5
model.innerRadius = 20
....
TypeScript 中是否有任何选项可以执行此操作?
原文由 aleczandru 发布,翻译遵循 CC BY-SA 4.0 许可协议
您似乎试图完成的是在模型上强制执行结构。虽然在 C# 中使用类来实现这一点很有意义,但在 TypeScript 中,最好的方法是创建
type
或interface
。以下是两者的示例(为简洁起见减少了属性)
类型
界面
何时使用:
接口可以从类/类扩展,最适合定义属性时使用。
类型可以组合,并且应该更多地用于非复合属性。一个很好的例子是使用类型来做这样的事情:
可以在 这里 找到关于类型的优秀资源,或者作为 TypeScript 的答案:接口与类型。