const rCount = Array.prototype.reduce.call(str, (acc, letter) => {
if (rX.includes(letter)) {
acc.X++;
} else if (rO.includes(letter)) {
acc.O++;
}
return acc;
}, { X: 0, O: 0 });
const rCount = Array.prototype.reduce.call(str.toLowerCase(), (acc, letter) => {
switch(letter) {
case 'x':
acc.X++;
break;
case 'o':
acc.O++;
break;
}
return acc;
}, { X: 0, O: 0 });
const asSomeInterface = <K extends PropertyKey>(obj: { [P in K]: P extends `@${string}` ? string : never }) => obj;
asSomeInterface({
'@asd': 'asd',
'asd': 'asd', // error
});
const hasPairSum = (nums, desiredValue) => {
if(nums.length < 2) {
return false;
}
const [firstNum, ...tailNums] = nums;
const hasDesiredValue = tailNums.some((num) => firstNum + num === desiredValue);
return hasDesiredValue || hasPairSum(tailNums, desiredValue);
};
require
. Тебе нужно прописать путь строкой. Путь должен быть относительно папки public (это корневая папка для приложения). function getRandomArbitrary(min, max, maxDigits = 0) {
if (min > max || min < 0 || max <= 0) {
return ('Задан неверный диапазон! Укажите другие числа.');
}
const digitsDegree = 10 ** maxDigits;
return ~~((Math.random() * (max - min) + min) * digitsDegree) / digitsDegree;
}
getRandomArbitrary(1, 2, 6);
lispFns[functionName] = (arg) => {return body[0](arg)}
function memorize(fn){
...
return (...args) => {
// args
return fn(...args);
}
}
routes[window.location.pathname];
вернёт ошибку, поскольку ты будешь использовать тип string, которого в объекте нет (только заданные ключи), либо использовать тип { [key: string]: string }
.