Я только начинаю с создания более серьезных проектов в javascript, и я чувствую, что беспринципность становится немного проблемой. В частности, я часто обнаруживаю, что мои классы инициируются с неправильными типами, ошибка, которую желательно легко исправить, но иногда мне приходится много времени. Вот почему я хотел бы знать: существуют ли какие-либо практики в javascript для утверждения, что свойство класса имеет правильный тип? Как и в этом примере (a всегда должна быть строкой, b всегда должен быть экземпляром класса Bar, а c всегда должен быть числом):
class Foo {
constructor(a,b,c){
if(typeof a !== "string"){
throw "Wrong type";
}
this.a = a;
if(!(b instanceof Bar)){
throw "Wrong type";
}
this.b = b;
if(typeof c !== "number"){
throw "Wrong type";
}
this.c = c;
} setA(a){
if(typeof a !== "string"){
throw "Wrong type";
}
this.a = a;
} setB(b){
if(!(b instanceof Bar)){
throw "Wrong type";
}
this.b = b;
} setC(c){
if(typeof c !== "number"){
throw "Wrong type";
}
this.c = c;
}
}
Это похоже на плохой способ сделать это, поскольку он очень громоздкий и повторяющийся, и также странно просто бросать "Неверный тип". Есть ли какие-либо рекомендации по этому поводу? Эта проблема обычно просто игнорируется?
Я попытался исследовать это, но не смог найти что-то, даже упоминая эту проблему.
Кроме того, я знаю, что это потенциально является довольно субъективным вопросом и может не подходить для этого сайта. В этом случае есть ли у кого-нибудь указания, где я должен задавать такой вопрос?
Вы можете немного его создать и использовать реальные геттеры / сеттеры, чтобы украсить все это немного:
Но если это все еще некрасиво, просто используйте машинопись или поток.