Какова цель объявления класса, расширяющего любой — машинописный текст

#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. Да, мне это тоже показалось почти бесполезным в отношении безопасности типа. Спасибо! 🙂