==
проверяет ссылки на объекты, .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"));
Причина, по которой вы получаете ошибку, состоит в том, что вы должны сначала инициализировать массив , а затем вы можете push()
значения для него.
IUser
с помощью year = [{your year}]
, а затем , затем , вы можете выдвинуть в него больше значений. IUser
объект с пустым массивом year, и затем вы можете выдвинуть значения к нему. Массив Year в пользовательском объекте должен быть инициализирован пустым, прежде чем помещать в него объекты.
this.user.Year = [];
, а затем,
this.user.Year.push(year);
Вы инициализировали свой массив перед его использованием.
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;
}
Необходимо убедиться, что Year
присутствует на объекте пользователя, а также CalendarYear
присутствует на объекте Year