Проверка типа интерфейса в TypeScript
В TypeScript вы можете столкнуться со сценарием, в котором определение соответствия объекта предопределенному интерфейсу во время выполнения имеет решающее значение . Хотя проверка типа класса с использованием ключевого слова экземпляра является простой, применение его к интерфейсам представляет собой проблему.
Традиционные подходы, такие как использование оператора экземпляра, оказываются неэффективными, поскольку интерфейсы не представлены как отдельные типы в скомпилированном JavaScript. Вместо этого защита пользовательских типов предлагает решение:
interface A { member: string; } function instanceOfA(object: any): object is A { return 'member' in object; } var a: any = { member: "foobar" }; if (instanceOfA(a)) { alert(a.member); }
Этот подход позволяет проверять соответствие интерфейса во время выполнения без необходимости использования ключевого слова instanceof.
В ситуациях, когда необходимо проверить несколько элементов, можно ввести свойство дискриминатора. Этот подход требует управления собственными дискриминаторами и обеспечения уникальности во избежание конфликтов:
interface A { discriminator: 'I-AM-A'; member: string; } function instanceOfA(object: any): object is A { return object.discriminator === 'I-AM-A'; } var a: any = { discriminator: 'I-AM-A', member: "foobar" }; if (instanceOfA(a)) { alert(a.member); }
Используя специальные средства защиты или дискриминаторы типов, вы можете эффективно выполнять проверки типов интерфейса во время выполнения, повышая надежность ваших приложений TypeScript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3