Об этом проекте
TypeFest — это коллекция переиспользуемых TypeScript-типов, призванная заполнить пробелы во встроенной системе типов. Её можно установить из npm как type-fest, а отдельные типы импортируются с помощью синтаксиса type-only import TypeScript. Документированная разрабатываемая версия требует TypeScript 5.9 или новее, проект на ESM и включённый strict mode в tsconfig. Сопровождающий также отмечает, что нужные типы можно копировать без указания авторства.
Библиотека охватывает широкий набор сценариев использования на уровне типов. К базовым типам относятся Primitive, Class, Constructor, AbstractClass, TypedArray, ObservableLike, а также наборы символов, такие как LowercaseLetter, UppercaseLetter, DigitCharacter и Alphanumeric.
Объектные и служебные типы образуют самый большой раздел. Среди примеров — Except для исключения ключей, Writable и WritableDeep для удаления модификаторов readonly, Merge и MergeDeep для объединения типов, PartialDeep и RequiredDeep для рекурсивной опциональности и обязательности, ReadonlyDeep для глубокой неизменяемости, а также SetOptional, SetRequired, SetReadonly и SetNonNullable для настройки выбранных свойств. Также предоставляются типы условного выбора, такие как ConditionalKeys, ConditionalPick и ConditionalExcept, вложенные помощники, такие как PickDeep, OmitDeep, Get и Paths, и помощники для объединений, такие как LiteralUnion, TaggedUnion, UnionToIntersection, KeysOfUnion и DistributedOmit.
Типы-ограничители и булевы типы включают If, IsAny, IsNever, IsUnknown, IsNull, IsUndefined, IsTuple, IsUnion, IsLiteral, IsStringLiteral, IsNullable, а также проверки равенства, такие как IsEqual. Поддержка JSON включает JsonValue, JsonPrimitive, JsonObject, JsonArray, Jsonifiable и Jsonify. Другие группы охватывают структурированное клонирование, асинхронные типы, такие как Promisable, AsyncReturnType и Asyncify, типы для работы со строками, такие как Split, Replace, Trim, RemovePrefix и RemoveSuffix, а также типы массивов и кортежей, такие как ArrayElement, LastArrayElement, Includes, Join, ArraySlice, FixedLengthArray и NonEmptyTuple.
README связывает каждое имя типа с его исходным определением для подробной документации. Связанный пакет ts-extras предоставляет функции времени выполнения для некоторых из тех же концепций. Проект принимает предложения и pull request'ы для дополнительных часто необходимых типов в соответствии со своими правилами участия.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.