Как стать автором
Обновить

Комментарии 6

<code lang="Typescript">const parsed = map(['1', '2', '3'], (n) => parseInt(n))</code>

здесь вместо лямбды можно было бы использовать ссылку на функцию parseInt, для примера было бы лучше использовать какую-нибудь функцию из 2 аргументов или подобного, например (n) => parseInt("1" + n + "00"))

Использовать ссылку на parseInt нельзя, классическая ошибка новичка в JS ведь:


['1', '2', '3'].map(parseInt) // [ 1, NaN, NaN ]

Чтобы приводить строки в числам — я использую "Number":


['1', '2', '3'].map(Number) // [ 1, 2, 3 ]

Нельзя здесь использовать ссылку на parseInt, это классические грабли.


Фокус в том, что Array.prototype.map передаёт в колбек дополнительные опциональные параметры, и parseInt тоже может принимать дополнительные опциональные параметры — вот только эти параметры друг другу совершенно не соответствуют.


Напишите в консоли браузера ['10','10','10','10','10','10','10'].map(parseInt) если не верите.

Странно, что в TS свойство constructor имеет тип Function, т.е. нельзя написать
new this.constructor()

При наследовании бывает полезно. А ведь можно было бы сделать что-нибудь такое:
constructor: { new (...args): this; }

А зачем делать у ф-ии тип возвращаемого значения unknown?

Потом же результат работы такой ф-ии TS не даст использовать, разве нет?

Контекстуальная типизация (contextual typing), основанная на void, не запрещает функции что-либо возвращать.

А если почти везде стрелочные ф-ии вместо function someName() {} как указать, что они void? Переписывать всё на const myFunc = function(): void {}?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий