Связывание это плохо¶
Это определение bind
в lib.d.ts
:
1 |
|
Как видите, возвращается any! Это означает, что вызов bind
для функции приведет к полной потере проверки типа исходной сигнатуры функции.
Например, следующий пример:
1 2 3 4 5 6 |
|
Лучше написать это с помощью простой стрелочной функции с явным описанием типа:
1 2 3 4 5 6 |
|
Но если вы ожидаете каррированную функцию для этого есть образец получше.
Члены класса¶
Другое распространенное использование - использование bind
для обеспечения правильного значения this
для функций класса. Не делай этого!
Следующее демонстрирует то, что вы теряете проверку типа параметра, если используете bind
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Если у вас есть функция-член класса, которую вы ожидаете передать, используйте в первую очередь стрелочную функцию, например, можно было бы написать тот же класс Adder
как:
1 2 3 4 5 6 7 8 |
|
Другой альтернативой является вручную указать тип связываемой переменной, например:
1 |
|