const articleDB = new DB(json);
console.log(articleDB.get(1));
articleDB.delete(1);
for(const article of articleDB.byTagIterator('oracle')) {
console.log(article)
}
saveToFile(articleDB.toJSON());
Object.keys({2:0, 3:0, 1:0}) // ['1', '2', '3'], возможно этот факт тебе чем-то поможет.
ну вот нихрена не так.а ты руками замерь. Хз что у них там на самом деле значат ops/sec.
unshift - неоптимально. А вот добавить один элемент в уже имеющийся массив от push неотличимо.хотя вид классов не интуитивно понятный этому не способствует
class DB {
constructor(json) {
// начальная подготовка структуры
}
toJSON() {
// экспорт структуры для сохранения
}
reversed() {}
reversedIterator() {}
byTag(tag) {}
byTagIterator(tag) {}
add(record) {}
get(id) {}
delete(id) {}
}
const isPosts = (posts: unknown): posts is Posts => !!posts
&& typeof posts === 'object'const isPosts = (posts: unknown): posts is Posts => !!posts
&& typeof posts === 'object'
//&& ...Posts, а не "какой-то объект" и вообще не какая-то неведомая хрень.Posts.
onloadend на классический onload.картинка.src = и картинка.onload = - возможно событие отрабатывает прямо при присваивании, т.к. ничего грузить не надо(хотя и те должно бы).
let num = 0; не помешает тебе далее по коду сделать num = { foo: 'bar' } или даже num = funcion() {}.
props.name будет только то, что придёт с сервера - то можно забить и так и писать.
{
'story': {
header: string;
page: {
tag: string;
image_src: string;
image_alt: string;
}[];
};
}"story". Соответственно ты не можешь обращаться к нему никак иначе чем через blogPosts.story(blogPosts["story"]).props.name должен лежать тип "story", а не string.undefined при этом уверенно думая, что у тебя там Post.type Posts = {
[key: string]: Post
} ты говоришь тайпскрипту "при обращении по любому строковому ключу мне гарантировано вернётся Post". Т.е. ты снимаешь с тайпскрипта ответственность и берёшь её на себя.
Ограничения для локальных файлов не продиктованы никакой спецификацией или очевидной логикой, они продиктованы особенностями конкретных реализаций конкретных браузеров и желаниями левой пятки произвольных разработчиков. Именно потому я и рекомендую забыть о локальных файлах.