После этого и срабатывает этот блок success. где отрисовывается новый блок.
document.getElementById('client-personal-note-container').innerHTML += appendNotemakrup;
filter_var($url, FILTER_VALIDATE_URL);
/((http|https):\/\/)?([a-z0-9-]+((\.[a-z0-9-]+)+)?)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
export type TBookPage = Omit<TBookBasic, 'authors'> & {
// [...]
authors: TCategoryAuthorBook[]
}
forEach()
querySelectorAll()
возвращает статичный набор.forEach()
, или же получать динамическую коллекцию, используя соотв. метод. !f(a,b) && !f(b,a)
. А второе условие просто заменяется на один вызов функции. type AlbumType = {
id: number;
title: string;
};
enum ActionPoints {
SET_ALBUMS = "SET_ALBUMS",
ADD_ALBUM = "ADD_ALBUM",
REMOVE_ALBUM = "REMOVE_ALBUM"
}
type ActionType = {
type: ActionPoints.SET_ALBUMS;
payload: AlbumType[];
} | {
type: ActionPoints.ADD_ALBUM;
payload: AlbumType;
} | {
type: ActionPoints.REMOVE_ALBUM;
payload: number;
};
const reducer = (state: AlbumType[], action: ActionType) => {
switch (action.type) {
case ActionPoints.SET_ALBUMS:
return action.payload;
case ActionPoints.ADD_ALBUM:
return [...state, action.payload];
case ActionPoints.REMOVE_ALBUM:
return state.filter((album) => album.id !== action.payload);
default:
return state;
}
};
Иначе говоря, в ООП-шном стиле и в функциональном (если я правильно понимаю).в обоих случаях процедурный стиль
Пока возникает ощущение, что всё это - сугубо вкусовщинаПо сути да, чисто вкусовщина.
const controller = { login }
export default controller
на export default login
Но для ноды terser редко используют export const login = (authService) => (req, resp) => {
// do something
}