TypeScriptУрок 5 из 16
Объекты и интерфейсы
Интерфейс описывает форму объекта: какие у него поля и каких они типов. Любой объект, объявленный этим типом, обязан ему соответствовать.
Главное
- interface User { id: number; name: string } — имя и список полей.
- Знак ? делает поле необязательным: email?: string.
- extends добавляет поля к уже существующему интерфейсу.
- Если забыть обязательное поле, TypeScript подскажет, какое именно.
Пример
interface User { id: number; name: string; email?: string; // optional property} interface Admin extends User { permissions: string[];} const anna: User = { id: 1, name: "Anna" };const ben: Admin = { id: 2, name: "Ben", email: "ben@example.com", permissions: ["edit"] };// const ghost: User = { id: 3 }; // error: property 'name' is missing function contact(user: User): string { return user.email ?? "no email";} console.log(`${anna.name}: ${contact(anna)}`);console.log(`${ben.name}: ${contact(ben)}, can ${ben.permissions.join(", ")}`);Admin получает все поля User и добавляет permissions. Объект без name не пройдёт проверку, а отсутствующий email заменяется текстом через ??.
Задание
Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.Расширьте CartItem полем quantity и необязательным gift, пусть lineTotal возвращает цену, умноженную на количество, и выведите «Mug: 16 (gift)» и «Tea: 15».
Вывод
Здесь появится то, что напечатает программа.