Назад к вопросамРоль типа
Задача 4: Сделать все свойства
Задача 5: Создать обобщённый тип
Middle
2
/** * Task 3: Analyze the function below and fix any errors. Explain the role of the `never` type in TypeScript. */ function throwError(): never { throw new Error('An error occurred'); } /** * Task 4: Transform the given type `MaybeProps` to make all of its properties required. */ type MaybeProps = { a?: number; b?: string; }; /** * Task 5: Create a generic type `Container` that contains a single property `value`. * The type of `value` should be constrained to either `string` or `number`. */ type Container<T> = { value: T; };
Компании, где спрашивали
Altenar
Ответ от нейросети
sobes.tech AI
Функция throwError корректна и не содержит ошибок. Она возвращает тип never, что означает, что функция никогда не завершится нормально (например, всегда выбрасывает исключение или бесконечно выполняется).
Роль типа never в TypeScript
Тип never используется для обозначения значений, которые никогда не возникают. Это полезно для функций, которые:
- Всегда выбрасывают исключение
- Никогда не возвращают управление (например, бесконечные циклы)
Это помогает компилятору понимать, что после вызова такой функции код не продолжится.
Задача 4: Сделать все свойства MaybeProps обязательными
Для этого можно использовать встроенный утилитный тип Required<T>:
type MaybeProps = {
a?: number;
b?: string;
};
type RequiredProps = Required<MaybeProps>;
// Теперь RequiredProps: { a: number; b: string; }
Задача 5: Создать обобщённый тип Container с ограничением на string или number
Для ограничения типа T можно использовать extends:
type Container<T extends string | number> = {
value: T;
};
// Пример использования:
const stringContainer: Container<string> = { value: "hello" };
const numberContainer: Container<number> = { value: 42 };
// Ошибка:
// const boolContainer: Container<boolean> = { value: true }; // boolean не разрешён