#typescript #class
Вопрос:
Я смотрю на код в пакете под названием WalletConnect и столкнулся там с одной странной вещью. В файле декларации есть следующие две строки:
declare const ProviderEngine: any;
declare class WalletConnectProvider extends ProviderEngine {
bridge: string;
...
}
Зачем создавать класс, который расширяется any
? Для чего это хорошо? Спасибо за разъяснения.
Ответ №1:
Я считаю, что все, что делает, — это разрешает автозаполнение для известных свойств, в то же время разрешая любое свойство.
Например, вы получаете это автозаполнение:
Даже если все разрешено, так как класс расширяется any
.
new WalletConnectProvider().bridge // can autocomplete this property
new WalletConnectProvider().noSuchMethod() // no type error
однако я бы не рекомендовал этого делать, так как почти все any
виды использования имеют более низкий уровень безопасности. И в этом случае вы могли бы написать все виды кода, которые могли бы выйти из строя во время выполнения. Я не совсем уверен, что автор этих строк пытался сделать, но это просто кажется плохим планом.
Комментарии:
1. Да, мне это тоже показалось почти бесполезным в отношении безопасности типа. Спасибо!
![]()