Typescript: определение типа для параметра объекта функции стрелки

-1

Я пытаюсь определить тип для параметра объекта в функции стрелки, я новичок в машинописи, и я нашел любой пример, показывающий этот случай. так:

    const audioElem = Array.from(videoElem.parentNode.childNodes).find(
      (child: {tagName: string}): boolean => child.tagName === 'AUDIO',
    );

Я просто получаю ошибку, и это нормально, но вы поняли. Любая идея? :)

Ошибка:

error TS2345: Argument of type '(child: { tagName: string; }) => boolean' is not assignable to parameter of type '(value: {}, index: number, obj: {}[]) => boolean'.
  Types of parameters 'child' and 'value' are incompatible.
    Property 'tagName' is missing in type '{}' but required in type '{ tagName: string; }'.

17       (child: { tagName: string }): boolean => child.tagName === 'AUDIO',
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  src/components/Subscriber/Subscriber.tsx:17:17
    17       (child: { tagName: string }): boolean => child.tagName === 'AUDIO',
                       ~~~~~~~
    'tagName' is declared here.
  • 1
    Какая ошибка? Это выглядит хорошо, например, в typescriptlang.org/play/…
  • 0
    Я получаю эту ошибку с tsc --watch : pastebin.com/MH6PkC7g
Показать ещё 1 комментарий
Теги:

1 ответ

0

Вы можете использовать type interface для этого.

// Either…
type MyParam = {
  tagName: string
}

// … or…
interface MyParam {
  tagName: string
}

// …and then.
const audioElem = Array.from(videoElem.parentNode.childNodes).find(
  (child: MyParam): boolean => child.tagName === 'AUDIO',
);

Что касается разницы между ними, вы можете прочитать эту статью.

  • 0
    Я тоже пытался, но я все еще получаю сообщение об ошибке: pastebin.com/MH6PkC7g

Ещё вопросы

Сообщество Overcoder
Наверх
Меню