Использование классов в цикле for в node.js

1

Честно говоря, я не знаю, что спросить о моем случае, поэтому я просто добавлю некоторые подробности. Я родом из java, поэтому я знаком с классами.

Возьмем, к примеру, класс и упростим его, отбросим частные поля к публике и без геттера и сеттера

class User{
 public String name;
 public String email;
}

Это полезно в некоторых случаях, например, иметь массив пользователей, а затем я могу использовать что-то вроде:

for(User user: usersList){
   user.name='some new value'
   //since user is a class, code assist, suggests the name and also if I have user.namee it throws an error
}

Перейдя в javascript, я могу получить массив и сделать что-то вроде

for (let user of usersList){
    user.name='some new value'
    //however if I type user.nammee no error is thrown and code assist does not know what to recomment
}

Я думаю, что теперь вы можете получить эту идею. Я хочу, чтобы это упростило правильное получение полей объекта с помощью кода, а также избежать ошибок ввода из-за плохого ввода имени свойства. Классы Javascript из того, что я вижу, имеют только методы... так что я могу применить в этом случае?

  • 2
    Вы можете иметь методы getter и setter в классе
  • 0
    Вопрос о помощи кода на самом деле больше связан с вашим редактором, чем с JavaScript.
Показать ещё 3 комментария
Теги:

3 ответа

0
Лучший ответ

JavaScript позволяет ссылаться на свойства, которые у объекта отсутствуют: вы можете добавить их ad-hoc, и если вы читаете несуществующие свойства, вы просто получите undefined. Так работает JavaScript.

Если вы хотите получить сообщение об ошибке при попытке назначить несуществующее свойство, рассмотрите метод Object.seal, который вы можете применить в конструкторе для вашего класса:

"use strict";
class User{
    constructor (name, email) {
        this.name = name;
        this.email = email;
        // Seal will disallow new properties
        Object.seal(this);
    }
}

const user = new User();

user.name = "Jeff";

console.log(user); // Shows property with "Jeff"

user.nammmeeee = "Jeff"; // Produces error

Обязательно используйте строгий режим ("use strict"), поскольку в противном случае эти ошибки будут подавлены.

1

проверить машинопись

и эта "скрипка" на игровой площадке TypeScript

class User {
    constructor(public name: string, public email: string = "") { }

    /*
    //shorthand for

    public name: string;
    public email: string;

    constructor(name:string, email:string="") { 
        this.name = name;
        this.email = email;
    }
    */
}

var usersList = [
    new User("Jack"),
    new User("Jill"),
    new User("Joe")
];

for (let user of usersList) { 
    user.email = user.name + "@mail.com";
}

и поскольку userList распознается как тип User[], let user также вводится как let user:User

-1

Вы можете сделать это в javascript. Только это, ваш список пользователей будет массивом, в котором у вас будут ваши пользователи. Петля будет для цикла от 0 до длины-1. У этого класса будет такой синтаксис, как этот.

var userclass= {Имя: 'xyz', Addr: 'address',..... другие реквизиты}

  • 0
    Я думаю, вы неправильно поняли вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню