Связывание это плохо¶
Это определение 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 | |