Ограничения обобщений: сужение параметров типов
Используйте extends, чтобы обеспечить выполнение требований к структуре обобщений
«Ограничения обобщений: сужение параметров типов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Повторение ограничений
function len<T extends { length: number }>(val: T): number {
return val.length;
}Ограничение конкретными методами
interface Stringable { toString(): string; }
function stringify<T extends Stringable>(val: T): string {
return val.toString();
}Вывод из ограничения
function pluck<T, K extends keyof T>(items: T[], key: K): T[K][] {
return items.map(item => item[key]);
}
const names = pluck(users, 'name'); // string[]Ограничения высших порядков (имитация)
Ограничение примитивными типами
type Primitive = string | number | boolean | bigint | symbol | null | undefined;
function isPrimitive<T extends Primitive>(val: T): true { return true; }Рекурсивные ограничения
interface Comparable<T> { compareTo(other: T): number; }
function sort<T extends Comparable<T>>(items: T[]): T[] {
return [...items].sort((a, b) => a.compareTo(b));
}Ограничение со значением по умолчанию
function process<T extends object = Record<string, unknown>>(data: T): void {
console.log(Object.keys(data));
}T extends Record<string, unknown>
function getValue<T extends Record<string, unknown>>(obj: T, key: string): unknown {
return obj[key];
}Вывод ограничений в возвращаемых типах
function firstKey<T extends object>(obj: T): keyof T {
return Object.keys(obj)[0] as keyof T;
}Утилита NoInfer (TS 5.4)
function createState<T>(initial: T, fallback: NoInfer<T>): T {
return initial ?? fallback;
}Быстрая проверка
Итоги
Часто задаваемые вопросы
Урок «Ограничения обобщений: сужение параметров типов» бесплатный?
Да — полный текст урока «Ограничения обобщений: сужение параметров типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Ограничения обобщений: сужение параметров типов»?
Используйте extends, чтобы обеспечить выполнение требований к структуре обобщений Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Ограничения обобщений: сужение параметров типов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- keyof и типы индексированного доступа
- Ограничения обобщений: сужение параметров типов
- Условные типы: T extends U ? X : Y
- Распределительные условные типы