@Boris007

Как расширить дженерик MutableRefObject добавив в него новое свойство?

Так выглядит этот тип в исходнике
interface MutableRefObject<T> {
   current: T;
}

Я хотел добавить в него свойство prev

Но после уже решил в лоб расширить интерфейс интерфейсом, но всё равно не получается
interface MutableRefObject {
  prev: null | HTMLParagraphElement; 
}


const ref: MutableRefObject = useRef(null)
ref.prev = null


Property 'prev' is missing in type 'MutableRefObject<null>' but required in type 'MutableRefObject'.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Ну какбэ очевидно, что:
interface MutableRefObject<T> {
  prev: null | HTMLParagraphElement; 
}


Если интeрфейс в либе, то:
declare module 'lib-name' {
  interface MutableRefObject<T> {
    prev: null | HTMLParagraphElement; 
  }
}

Или, хуже:
declare module 'lib-name/full/path/to/declaration.ts' {
  interface MutableRefObject<T> {
    prev: null | HTMLParagraphElement; 
  }
}


Но вообще, если для себя то делай так:
interface MySuperMutableRefObject extends MutableRefObject<T> {
  prev?: null | HTMLParagraphElement; 
}

и не трогай библиотечный тип.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы