如果我有一个三角形类,如下所示:
export default class Triangle {
sides: number[]
constructor(...sides: number[]) {
this.sides = sides
}
kind() {
// returns type of triangle
{
}
Run Code Online (Sandbox Code Playgroud)
如果传入构造函数的边没有创建真正的三角形,那么在创建类时(例如在构造函数中)还是在调用函数时抛出错误更好?
有这个答案,它说在 Java 中没问题,我确定它在 TypeScript 中有效。我只是想知道是否有关于 OOP 和 TypeScript 的“最佳实践”。
在构造函数中抛出是完全可以接受的。通常最好的做法是快速失败并尽早失败。例如,在您的情况下,最好抛出构造函数,以便可以尽早将错误暴露给负责发送错误数据的代码。如果您稍后在实际使用三角形方法时抛出,则将被该异常中断的代码不会出错(他们无法采取任何不同的措施来防止异常)。这通常意味着您必须寻找创建对象的位置,以解决错误。
构造函数的主要职责之一是确保对象只能在有效状态下创建。因此,不仅在参数会导致对象处于无效状态时抛出是可以接受的,而且这正好符合构造函数首先存在的原因。
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |