declaration merging - это продвинутая фича для продвинутых юзеров. В обычном случае ты не должен расширять библиотечные типы. Ты должен создавать свои.{
foo: 'string'
}{
foo: string
bar: string
} но можешь типу {
foo: string
bar?: string
}bar.MySuperMutableRefObject у которого есть prev ты присваиваешь обычный MutableRefObject(полученный из useRef) у которого нет prev.interface MySuperMutableRefObject<T> extends MutableRefObject<T> {
prev: null | HTMLParagraphElement;
}
function useMySuperRef<T>(value?: T): MySuperMutableRefObject<T> {
const ref = useRef(value) as MySuperMutableRefObject<T>;
ref.prev ??= null;
return ref;
}
Тип'MutableRefObject<null>'не имеет ничего общего с'MutableRefObject<HTMLParagraphElement | null>'
useRef без указания типа, и передаёшь ему null, ts и выводит тип MutableRefObject<null>, откуда ему знать что ты туда ещё и HTMLParagraphElement класть хочешь?const ref: MutableRefObject<null | HTMLParagraphElement> = useRef<null | HTMLParagraphElement>(null);const ref = useRef<HTMLParagraphElement>(); // нафига те null если undefined тоже неплох:)interface MySuperMutableRefObject<T> extends MutableRefObject<T> {
prev?: null | HTMLParagraphElement;
}
el-option тоже в подкомпонент можно. Каждую el-table-column - в свой компонент. И т.д.el-select сам по себе жирный. Можно во-первых задать ему фиксированную высоту, во-вторых задать фиксированную высоту строкам таблицы. el-select и el-table на предмет оптимизаций: зачастую жирные компоненты имеют специальные пропсы, которые отключают анимации, оптимизирую отрисовку и всё такое прочее.el-select и дебажим...
key?: string то же самое что key: string | undefined. *
<template #default="scope">
<v-select-column :selected="selected_table_items_set.has(scope.row.id)" :name="scope.row.name" :key="scope.row.id"/>
</template><template>
<span v-if="!selected">
{{ name.join(', ') }}
</span>
<el-select
v-else
v-model="name"
multiple
collapse-tags
:max-collapse-tags="4"
:multiple-limit="50"
style="width: 100%"
>
<el-option
v-for="item in name_options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
violation_type отсутствует в act, то можно условие написать так: {act.violation_type?.violation_description ? (.
doctype.