Выдвиньте объект во вложенный массив Typescript, получите ошибку: невозможно прочитать свойство «push» из неопределенного

== проверяет ссылки на объекты, .equals() проверяет строковые значения.

Иногда кажется, что == сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.

Для Например:

String fooString1 = new String("foo");
String fooString2 = new String("foo");

// Evaluates to false
fooString1 == fooString2;

// Evaluates to true
fooString1.equals(fooString2);

// Evaluates to true, because Java uses the same object
"bar" == "bar";

Но будьте осторожны с нулями!

== обрабатывает строки null в порядке, но вызов .equals() из пустой строки приведет к исключению:

String nullString1 = null;
String nullString2 = null;

// Evaluates to true
System.out.print(nullString1 == nullString2);

// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));

Итак, если вы знаете, что fooString1 может но не менее очевидно, что он проверяет значение null (из Java 7):

System.out.print(Objects.equals(fooString1, "bar"));
-2
задан Neurothustra 10 March 2019 в 17:54
поделиться

4 ответа

Причина, по которой вы получаете ошибку, состоит в том, что вы должны сначала инициализировать массив , а затем вы можете push() значения для него.

  • Либо инициализируйте новый IUser с помощью year = [{your year}], а затем , затем , вы можете выдвинуть в него больше значений.
  • Или инициализируйте новый IUser объект с пустым массивом year, и затем вы можете выдвинуть значения к нему.
0
ответ дан 0leg 10 March 2019 в 17:54
поделиться

Массив Year в пользовательском объекте должен быть инициализирован пустым, прежде чем помещать в него объекты.

this.user.Year = [];

, а затем,

this.user.Year.push(year);
0
ответ дан Sajeetharan 10 March 2019 в 17:54
поделиться

Вы инициализировали свой массив перед его использованием.

user: IUser = <IUser>{};    
createUser(
    firstName: string,
    lastName: string,
    email: string,
    uid: string,
    isTeacher: boolean,
    passType: string) {
    const year: IYear = {
      CalendarYear: this.calendarYear,
      PassType: passType,
      UserItinerary: {} as IItinerary,
      WaiverStatus: false,
      Guests: [],
      SignupDate: this.dateTime
    }
    this.user.FirstName = firstName;
    this.user.LastName = lastName;
    this.user.Email = email;
    this.user.Uid = uid;
    this.user.IsTeacher = isTeacher;
    this.user.IsAdmin = false;
    this.user.Year=[];
    this.user.Year.push(year);    
    return this.user;
  }
0
ответ дан lazydeveloper 10 March 2019 в 17:54
поделиться

Необходимо убедиться, что Year присутствует на объекте пользователя, а также CalendarYear присутствует на объекте Year

0
ответ дан vlio20 10 March 2019 в 17:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: