some
, если нужен именно map
с остановкой цикла - тут следует использовать for
либо какую-нить либу, которая это умеет.map
там где должен быть прерван цикл или там где не нужно получения нового массива - они говнокодеры.for
там где идеально справился бы map
- вы старпёр, бессмысленно раздувающий и усложняющий код.foo as unknown as Type
- двойным кастованием вы можете скастовать что угодно во что угодно. T extends [], K extends keyof T
- K
тут что-то производное от number
, потому что ключи(keyof) массива([]) - только цифры.let resultSort: T = arr;
- бессмысленно, так как arr.sort
в любом случае меняет исходный массив.a[propertyName].toLowerCase()
- упадёт если propertyName
будет year
, т.к. Number не имеет метода toLowerCase
.function sortArray<T extends {[key: string]: unknown}, K extends keyof T> (originArr: T[], propertyName: K, cb: (a: T[]) => T[]): T[] {
let arr: T[] = JSON.parse(JSON.stringify(originArr)); //deep copy array
arr.sort((a, b) => {
let nameA = String(a[propertyName]).toLowerCase(),
nameB = String(b[propertyName]).toLowerCase();
if (nameA < nameB)
return -1;
if (nameA > nameB)
return 1;
return 0;
});
return cb(arr);
}
String
, но тогда вместо unknown
надо указать конкретные типы с которыми предполагается работать, и в самой функции сортировки их учесть. vue create
.webpack
- универсальная система сборки приложения, vue-cli(-<some>)
- набор тулз для работы конкретно c vue, внутри использующий в том числе webpack со множеством преднастроек и плагинов. .browserslistrc
примерно следующего содержания:> 1%
last 2 versions
ie11
'@babel/preset-env'
добавь: useBuiltIns: 'usage'
post
ты никак не должен навешивать класс post__<some>
, это внутренний класс компонента. Если снаружи предполагается какая-то модиикация содержимого компонента - то только через props
или slot
. Назначаемый компоненту класс должен иметь влияние только на сам компонент целиком и не должен ничего знать о внутренней структуре. v-if
и v-show
, то предпочтительнее юзать оные. link:./path
или file:./path
.