Неявность Next.js next/image «image» имеет тип «любой» – как исправить?

Я новичок в Next.js и TypeScript и не могу найти ресурсы, посвященные решению этой проблемы:

import Image from 'next/image';

export default function Item({ image }) { // <-- parameter image needs a 'type' definition?
  ...
}

но приведенное выше дает это уведомление/предупреждение/ошибку в отношении параметра image:

Binding element 'image' implicitly has an 'any' type.ts(7031). (parameter) image: any

Пример использования image:

<Image src = {image} alt = {title} fill />

Я понимаю, что TS необходимо определить/объявить типы переменных, но я, черт возьми, понятия не имею, каким должен быть «тип» NextJS Image, и я также знаю, что присвоение ему типа any тоже не лучший вариант? Как я могу решить эту проблему?

Я попробовал следующее, но не работает:

export default function Item({ image: Image }) { // <-- tried the `image: Image` syntax

Есть ли у кого-нибудь какой-либо ресурс, документация или предпочтительное место для поиска правильного типа параметра/функции и правильного синтаксиса, который сопровождает его для подавления этих предупреждений?

Заранее спасибо.

Обновите свой вопрос, указав, где вы используете image

Ahmed Abdelbaset 25.04.2024 13:36

Что такое next/image? Модуль или файл mime-типа image/*?

Chukwujiobi Canon 25.04.2024 14:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

по умолчанию в машинописном скрипте, если вы не укажете тип переменной, она будет неявно типизирована влиянием элемента внутри

Если это объект по умолчанию, неявный тип будет anyhttps://www.typescriptlang.org/docs/handbook/type-inference.html

но у вас есть предупреждение из-за noImplicitAny, что по умолчанию верно в tsconfig https://www.typescriptlang.org/tsconfig/#noImplicitAny

вам необходимо явно указать тип вашего параметра или, если вы действительно хотите, указать его

export default function Item({ image }: {image: Image}) 

просто будьте осторожны, в вашем случае затронутый тип должен иметь свойство изображения внутри него, чтобы быть действительным

если объект изображения содержит путь к изображению, у вас будет следующее

export default function Item({ image }: {image: string}) 

Я попробовал ваше предложение, и это, в свою очередь, выдает еще одну ошибку: код: export default function Item({ image }: {image: Image}) ... ошибка: 'Image' refers to a value, but is being used as a type here. Did you mean 'typeof Image'?ts(2749) type Image = /*unresolved*/ any

Pippy Longstocking 25.04.2024 13:49

что присутствует внутри импортированного элемента Image? это тип или непосредственно путь к изображению? если это строка, то в этом случае код станет export default function Item({ image }: {image: string})

jeremy-denis 25.04.2024 13:55

спасибо, оно передается на: <Image src = {image} alt = {title} fill /> так что я считаю, что это так string поэтому я изменил на image: string - значит Image сам по себе не имеет типа? думаю, именно поэтому я в замешательстве

Pippy Longstocking 25.04.2024 14:01

отлично, если вы нашли решение, да, это оно;) я обновлю свой ответ, могу ли я попросить вас отметить его, если тема закроется?

jeremy-denis 25.04.2024 14:03

Попробуй это:

import Image from 'next/image';

type ItemProps = {
   image: Image
};

export default function Item({ image }: ItemProps) {
  ...
}

спасибо, попробовал ваше предложение, но в строке image: Image появляется ошибка: 'Image' refers to a value, but is being used as a type here. Did you mean 'typeof Image'?ts(2749) type Image = /*unresolved*/ any

Pippy Longstocking 25.04.2024 13:52

Другие вопросы по теме