Я пытаюсь определить тип для параметра объекта в функции стрелки, я новичок в машинописи, и я нашел любой пример, показывающий этот случай. так:
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.
Вы можете использовать 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',
);
Что касается разницы между ними, вы можете прочитать эту статью.
tsc --watch
: pastebin.com/MH6PkC7g