Воспользуйтесь служебными типами TypeScript, и вы получите более выразительный и надежный код.
TypeScript — это надмножество JavaScript, позволяющее добавлять статическую типизацию в базу кода. Благодаря мощной системе типов TypeScript обеспечивает улучшенную читаемость кода и возможность обнаружения ошибок во время компиляции.
Одним из наиболее полезных аспектов TypeScript являются его встроенные служебные типы, которые могут упростить ваши усилия по написанию кода и сэкономить драгоценное время разработки. Взгляните на эти обязательные типы служебных программ TypeScript, которые помогут вам с легкостью писать типобезопасный код.
TypeScript Тип частичной полезности позволяет сделать любые свойства объекта необязательными. Он позволяет создавать объекты с определенными свойствами, которые могут отсутствовать или быть неопределенными. Возьмем, например:
интерфейс Пользователь {
имя: нить;
возраст: число;
электронная почта: нить;
}
Используя Тип частичной полезности, вы можете создать новый тип со всеми свойствами пользовательского интерфейса, заданными как необязательные:
тип Необязательный пользователь = частичный
Теперь вы можете создать экземпляр типа OptionalUser с определенными только некоторыми свойствами:
константа пользователь: Необязательный пользователь = {имя: "Джон" };
Вы можете столкнуться с ситуациями, когда вам нужно создать объект с определенными необязательными свойствами. Это может пригодиться особенно при построении форм которые имеют несколько полей, так как не все из них могут потребоваться, и в таких случаях частичная полезность может быть жизненно важной.
Вспомогательный тип TypeScript Pick может помочь вам создать новый тип, выбрав только подмножество свойств из существующего типа. Это удобно, когда вам нужно сузить более крупный объект до нескольких необходимых свойств или если вы хотите применить строгую типизацию к нужным вам свойствам.
интерфейс Пользователь {
расположение: нить;
возраст: число;
электронная почта: нить;
}тип PersonWithoutEmail = Выбрать
'расположение' | 'возраст'>;
константа человек: PersonWithoutEmail = {
расположение: 'США',
возраст: 30
};
В этом примере интерфейс с именем «Пользователь» определяет три свойства: адрес электронной почты, возраст и местоположение.
С помощью Выберите тип утилиты, вы можете выборочно извлечь свойства «местоположение» и «возраст» из пользовательского интерфейса, что приведет к созданию нового типа с именем «PersonWithoutEmail».
Затем вы можете создать новый экземпляр типа «PersonWithoutEmail» и присвоить значения только свойствам «местоположение» и «возраст». Так как свойство "email" было исключено из этого типа, вы не можете присвоить его объекту.
С помощью служебного типа Pick вы можете создать новый тип, который просто включает нужные вам свойства. Это может помочь сделать ваш код более читабельным и с ним будет легче работать.
Тип readonly означает, что атрибуты объекта неизменяемы после его создания. Этот тип гарантирует непротиворечивость данных объекта в долгосрочной перспективе, что обеспечивает более плавную и безопасную обработку кода.
интерфейс Пользователь {
имя только для чтения: нить;
возраст только для чтения: число;
электронная почта только для чтения: нить;
}
Используя Тип утилиты только для чтения, вы можете создать новый тип со всеми свойствами пользовательского интерфейса, назначенными только для чтения:
тип Только для чтения = Только для чтения
Вы можете указать значения свойств при создании экземпляра ReadonlyUser::
константа пользователь: ReadonlyUser = {
имя: "Джон",
возраст: 30,
электронная почта: "[email protected]"
};
Когда вы помечаете свойства объекта как доступные только для чтения, попытка изменить значения этих свойств становится невозможной:
имя пользователя = "Джейн";
// Ошибка: нельзя присвоить 'name', потому что это свойство доступно только для чтения.
Тип Readonly особенно важен в ситуациях, когда вы хотите убедиться, что конкретный объект не изменяется, как бы на него ни ссылались. Например, если у вас есть объект, который содержит важные параметры конфигурации, вы хотели бы убедиться, что он остается неизменным.
Этот тип гарантирует наличие всех основных свойств объекта, в то время как тип Partial предлагает большую гибкость, позволяя вам указать подмножество свойств, оставляя остальные необязательный. Это может оказаться полезным в ситуациях, когда некоторые свойства могут быть не нужны или подлежат изменению.
интерфейс Пользователь {
имя: нить;
расположение: число;
адрес: нить;
}
Используя Требуемый тип утилиты, можно создать новый тип, который объединяет все атрибуты пользовательского интерфейса, требуя, чтобы каждое из этих свойств присутствовало. Создание экземпляра RequiredUser возможно только после правильной настройки всех его свойств.
константа пользователь: RequiredUser = {
имя: "Джон Доу",
расположение: "США",
адрес: "Канзас 9745-0622"
};
Использование типа утилиты Required гарантирует, что все необходимые свойства присутствуют в объекте.
Служебный тип Omit позволяет создать новый тип, исключив определенные свойства из существующего типа.
интерфейс Человек {
расположение: нить;
возраст: число;
электронная почта: нить;
}
тип PersonWithoutEmail = Пропустить
'электронная почта'>;
константа человек: PersonWithoutEmail = { местоположение: "США"; возраст: 30 };
Интерфейс Person имеет три свойства: возраст, местоположение и адрес электронной почты. Тип PersonWithoutEmail использует служебный тип Omit для включения всех свойств объекта Person, кроме электронной почты. Затем вы можете создать экземпляр этого нового типа, не указывая значение для свойства электронной почты.
Вы должны иметь в виду, что тип утилиты Omit во многом похож на тип утилиты Pick, поскольку он дает вам возможность разработать новый тип, используя только указанные вами свойства.
Вы можете использовать тип утилиты Record, чтобы определить тип объекта, для которого ключи и значения имеют определенный тип. Его определение:
тип Записыватьрасширяет ключ любой, T> = { [P в К]: Т;};
Это связывает тип T со значением каждого ключа, а K является объединением ключей любого типа. Результирующий объект имеет тип свойства P, установленный в T.
Рассмотрим сценарий типа объекта со строковыми ключами и числовыми значениями. В этом случае вы можете применить Тип утилиты записи как:
тип МояЗапись = Запись<нить, число>;
константа мойОбъект: МояЗапись = {
"фу": 1,
"бар": 2,
"баз": 3,
}
В этом примере MyRecord указывается как тип объекта со строковыми ключами и числовыми значениями. Объект myObject воплощает пример этого типа с ключами «foo», «bar» и «baz», назначенными их соответствующим значениям.
Эта статья раскрыла всю мощь служебных типов TypeScript — они могут быть ценным активом, когда дело доходит до оптимизации вашего кода и ускорения и повышения эффективности разработки. Эти служебные типы и TypeScript в целом могут творить чудеса, гарантируя, что ваш код всегда безошибочен и соответствует определенным структурам.