Сопоставление с образцом — процедуры, которые заставят вашу гимнастику типа TS взлететь

внешний интерфейс JavaScript TypeScript
Сопоставление с образцом — процедуры, которые заставят вашу гимнастику типа TS взлететь

Typescript поддерживает дженерики, также называемые параметрами типа. Вы можете выполнять ряд операций с параметрами типа и возвращать новый тип.类型编程.

Поскольку в программировании типов сложно реализовать некоторую логику, его в шутку называют类型体操.

Сообщество использует типы Typescript для реализации интерпретаторов Лиспа, реализации шахмат и других случаев (вы можете найти их в Zhihu), чего достаточно, чтобы показать, что типы Typescript могут реализовывать различную сложную логику.

Итак, гимнастика типа Typescript такая сложная, есть ли какой-нибудь быстрый способ ее освоить?

Действительно, я обобщил некоторые упражнения, которые могут быстро улучшить уровень гимнастики типа ТС. Например, рутина, о которой я собираюсь рассказать сегодня...сопоставление с образцом.

Сопоставление шаблонов для типов Typescript

Мы знаем, что строки можно сопоставлять с образцом с помощью регулярных выражений, находить совпадающую часть, извлекать подгруппы, а затем использовать $1, $2 и т. д. для ссылки на совпадающие подгруппы.

Типы Typescript также могут выполнять сопоставление с образцом.

Например, чтобы извлечь тип значения Promise:

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

Это сопоставление с образцом типа Typescript.

Обобщить:Сопоставление с образцом типов Typescript заключается в сопоставлении параметров типа с помощью расширений, а результат сохраняется в переменной локального типа, объявленной с помощью infer.Если он совпадает, извлеченный тип может быть получен из локальной переменной.

Насколько полезна эта процедура сопоставления с образцом? Давайте посмотрим на приложение в массивах, строках, функциях и т. д.

Сопоставление шаблонов для типов массивов

pop

pop должен удалить последний элемент, что может быть достигнуто путем сопоставления с образцом:

Мы извлекаем тип последнего элемента и тип предыдущего элемента посредством сопоставления с образцом, помещаем их в разные переменные с помощью infer, а затем создаем новый тип массива для возврата.

shift

Точно так же сдвиг должен удалить первый элемент, и он также реализован в аналогичном методе сопоставления:

Сопоставление шаблонов для строковых типов

trim

Обрезка заключается в удалении пробелов, табуляции и новых строк до и после, затем удалении следующих символов с помощью сопоставления с образцом и помещении их в новую переменную с помощью infer to return.

Сначала реализуйте TrimLeft:

Продолжайте рекурсию TrimLeft, если есть совпадение, пока не исчезнут предшествующие пробельные символы.

Затем реализуйте TrimRight:

Тогда их комбинация — это Trim:

replace

replace является частью строки замены.Вы можете извлечь подстроки до и после строки с помощью сопоставления с образцом, поместить их в разные переменные с помощью infer, а затем сформировать новую строку с замененной частью.

Схема сопоставления для типов функций

Тип параметра

Тип параметра получается путем сопоставления с образцом, чтобы получить часть параметра, поместить ее в переменную, объявленную infer, и вернуть ее.

тип возвращаемого значения

Удаление типа возвращаемого значения также означает получение части возвращаемого значения посредством сопоставления с образцом, помещение его в переменную типа, объявленную infer, и возврат.

Суммировать

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

Типовая гимнастика может реализовать много сложной логики, и ей сложно научиться, но, освоив некоторые упражнения, вы сможете освоить ее быстро.

Наиболее распространенной из этих подпрограмм является сопоставление с образцом.Подобно сопоставлению строк и извлечению подстрок, типы также можно использовать для сопоставления параметров типа с помощью расширений и сохранения извлекаемой части в переменной локального типа, объявленной с помощью infer.

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