const obj = {
val: 1,
valueOf() {
return this.val ^= 1;
},
};
// или
const obj = {
val: '1',
toString() {
return this.val = '1'.slice(this.val.length);
},
};
// или
const obj = {
val: true,
[Symbol.toPrimitive]() {
return this.val = !this.val;
},
};
console.log(obj == false, obj == true); // true true
console.log(...Array.from({ length: 5 }, () => +obj)); // 0 1 0 1 0
Array.from(str, n => n < 5 ? 0 : 1).join('')
// или
[...str].reduce((acc, n) => acc + +(n >= 5), '')
// или
''.concat(...str.split('').map(n => Math.floor(n / 5)))
// или
[].map.call(str, n => -~-~-~n >> 3).join``
// или
str.replace(/./g, m => Number('56789'.includes(m)))
// или
str.replace(/[1-4]/g, 0).replace(/[5-9]/g, 1)
будет ли работодатель рассматривать на позицию миддл бек бывшего миддла фронтендщика ?конечно будет, если потяните и сможете это доказать.
let b = [1, 2, 3, 0, 4, 5, 6];
const sum = b.slice(0, b.findIndex(e => e === 0)).reduce((total, amount) => total + amount);
console.log(sum)
const arrToSinglyLinkedList = (arr, nextKey = 'next') =>
arr.reduceRight((acc, n) => ({ ...n, [nextKey]: acc }), null);
function arrToSinglyLinkedList(arr, nextKey = 'next') {
let list = null;
for (let i = arr.length; i--;) {
const node = Object.assign({}, arr[i]);
node[nextKey] = list;
list = node;
}
return list;
}
const list = arrToSinglyLinkedList(arr, 'child');
mainArr.reduce((acc, cur) => {
if (!acc[cur]) acc[cur] = 0;
acc[cur]++;
return acc;
}, {})
const counter = {};
// пройти по массиву, заполняя counter
arr.forEach((el) => counter[el] = (counter[el] || 0) + 1);
{
555: 1,
30167380: 2,
496903611692199: 1,
245970100361652: 2,
711023259278888: 2
}
type ChooseKeys<O, T> = {
[K in keyof O]: O[K] extends T ? K : never;
}[keyof O];
// 'number' | 'alsoNumber'
type Test1 = ChooseKeys<{
number: number;
alsoNumber: number;
string: string;
anotherString: string;
bool: boolean;
}, number>;
// 'number' | 'alsoNumber' | 'bool'
type Test2 = ChooseKeys<{
number: number;
alsoNumber: number;
string: string;
anotherString: string;
bool: boolean;
}, number | boolean>;
лишь ошибки типизации которые не мешают компиляцииЕсли проект компилируется - то все типы сошлись. Если проект компилируется, а ошибка все таки есть - значит типы криво описаны.
Как проверять все файлы проекта на правильность типизации?Скомпилировать проект.
Но, если допустим, изменить какой-нибудь тип (интерфейс), а файл, который на него ссылается и использует будет закрыт, то ошибку никакую не выдаст.И это хорошо. Если TypeScript LSP будет перепроверять весь проект на каждый чих, а не только открытые файлы, то писать что-то сложнее todo листа будет невозможно...
Знаю, существуют ESLint, TSLint.Они тоже для статического анализа, но для немного другого. В VSCode они так же чекают только открытые файлы, из тех же соображений производительности.