преподавателю это может не понравиться
И threads ноды - это не чистая многопоточность. В браузере тоже воркеры есть.
Я специально отсеял юнионы, иначе у тебя на выходе будет не строка и ты не сможешь просто так использовать методы строки, что очевидно.
type ObjStr<T> = {[K in keyof T as T[K] extends string ? K : never]: T[K] & string};
я бы тег li оставил в родительском компоненте, а в отдельный вынес только его содержимое. Таким образом жёстко связанные в семантике html теги не будут разнесены потенциально по разным файлам.
А с третьей стороны, каррирование это что-то из «чистого функционального программирования» так что за использование тут this нужно просто бить по рукам =)
function ff(a, b, c) {
console.log(this, a, b, c);
}
const c1 = curry(ff);
c1('aa').call([1])('bb').call([2], 'cc')
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
}
const that = this; // this thing was missed
return function continueCurrying(...args2) {
const realThis = that === window || that === undefined ? this : that;
return curried.apply(realThis, args.concat(args2));
};
};
}
// с поддержкой this
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args)
}
return function continueCurrying(...args2) {
return curried.apply(this, args.concat(args2))
}
}
}
// без поддержки this
function curry2(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func(...args)
}
return function continueCurrying(...args2) {
return curried(...args, ...args2)
}
}
}
function ff(a) {
console.log(this, a);
}
const c1 = curry(ff);
const c2 = curry2(ff);
c1.call(['this'], 'a'); // в консоли: ['this'], 'a'
c2.call(['this'], 'a'); // в консоли: window, 'a'
пример
здесь PublicClassData берет из класса только всё публичное, и теперь в интерфейсе можно добавить свойство, одноименное приватному.
Разумеется, теперь класс DropdownAsyncSelectQueryHelper не соответствует интерфейсу CompositeAttributeQueryHelper, т.к. не содержит публичного поля props