/\s/
./\(текст\)/
./тут\s+длинная\s+строка.\s+слова\s+разделены\s+пробелами/g
:function spacify(regexp) {
const { source, flags } = regexp;
return new RegExp( source.replace(/\s+([*+{?])?/g, (_, mod) => `\\s${mod ?? '+'}`), flags )
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
function toSpacedRegExp(string, flags = 'g') {
return new RegExp( escapeRegExp(string).replace(/\s+/g, '\\s+'), flags )
}
// /тут\s+длинная\s+строка\.\s+слова\s+разделены\s+пробелами/g
const text = toSpacedRegExp('тут длинная строка. слова разделены пробелами')
В моем понимании стрелочная функция берет контекст при объявлении
class Car{
constructor() {
this.name = "BMW"
}
showname = () => {
console.log(this.name);
}
}
let { showname } = new Car();
let obj = {
name: 'random',
showname
}
obj.showname() // всё равно BMW
class Car {
storedThis = this
}
const car = new Car();
const { storedThis } = car;
car === storedThis; // true
jsx
это вообще отношения не имеет.if else
, как-то используй результат(например return isOnSa...
), или отключи\заигнорь правило - никакой реальной проблемы тут нет, просто такие конструкции зачастую могут быть ошибкой(когда ты просто забыл использовать результат). Observable<PayerTypes>
. Другим он быть не может и ни от чего не зависит. Зачем там url
?type Urls = {
getPayerTypes: PayerTypes;
getNPCTypes: NPCTypes;
}
private httpGet<K extends keyof Urls>(url: K): Observable<Urls[K]> {
return this.http.get<Urls[K]>(url)
.pipe(
pluck('data'),
catchError(this.handleError)
);
}
contentEditable=true
React.KeyboardEvent
- это синтетическое событие, которое генерируется в React. KeyboardEvent
- это оригинальное событие, которое генерируется в браузере.KeyboardEvent
лежит в event.nativeEvent
у React.KeyboardEvent
.const closeByESC = (event: KeyboardEvent | React.KeyboardEvent) => {
document.addEventListener('keydown', closeByESC);