v-for element of uncertain type

When using VS Code with Typescript, I encounter errors stating that the item is of type unknown. However, it still renders correctly with no errors or warnings in the console. How can I resolve these errors?

<script setup lang="ts">
    import NavLink from '@/Components/NavLink.vue';
    import { PropType } from 'vue'

    interface Item {
        href: String,
        active: Boolean,
        text: String
    }

    const props = defineProps({
        items : {
            type: Object as PropType<Item[]>,
            required: true
        }
    });
</script>

<template>
  <nav class="navbar navbar-expand-lg">
            <div class="container">
                <a class="navbar-brand" href="{{route('dashboard')}}">Page title</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
                        <NavLink v-for="(item, key, index) in items" :href="item.href" :active="item.active" :key="index">
                            {{item.text }}
                        </NavLink>
                    </ul>
                </div>
            </div>
        </nav>
</template>

Errors:

  • Property 'href' does not exist on type 'unknown'.
  • Property 'active' does not exist on type 'unknown'.
  • Property 'text' does not exist on type 'unknown'.

Answer №1

Your code is quite peculiar.

The items property is defined as

type: Object as PropType<Item[]>
- so the runtime type (information used by Vue to manage props) is an Object, yet the type information indicates it should be an array. This inconsistency may be causing confusion for Volar (the Vue VS Code language service).

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Typescript struggling to load the hefty json file

Currently, I am attempting to load a JSON file within my program. Here's the code snippet that I have used: seed.d.ts: declare module "*.json" { const value: any; export default value; } dataset.ts: import * as data from "./my.json" ...

Export problem in TypeScript

I'm having trouble with exporting in the prisma TypeScript file while executing it within a Node.js GraphQL project. Here is the error I am encountering: 05-12-2018 18:20:16: SyntaxError: /home/user/Publish/PracticeBusiness/src/generated/prisma.ts: ...

Utilize Optional Chaining for verifying null or undefined values

I have utilized the following code: data?.response[0]?.Transaction[0]?.UID; In this scenario, the Transaction key is not present, resulting in the error message: ERROR TypeError: Cannot read properties of undefined (reading '0') Instead of chec ...

`How can I extract HTMLElements from slots in vue3?`

When attempting to develop a Layer component, I encountered some challenges. Here is the code: // Wrapper.vue <template> <slot v-bind="attrs"></slot> </template> <script lang="ts" setup> import { defi ...

Utilizing ngModel with an uninitialized object

What is the most effective way to populate an empty instance of a class with values? For example, I have a User Class and need to create a new user. In my component, I initialize an empty User Object "user: User;". The constructor sets some properties, w ...

Universal Enum variable

I came up with a function that accepts a specific type of enum value to determine a color to pass as a prop to another function. However, I want the flexibility to throw a different enum at my function. I thought about using a generic type, but TypeScript ...

What is the best way to transform a Storybook typescript meta declaration into MDX format?

My typescript story file is working fine for a component, but new business requirements call for additional README style documentation. To meet this need, I am trying to convert the .ts story into an .mdx story. However, I am facing challenges in adding de ...

The use of *ngFor in Angular allows for a form array to be dynamically bound, enabling users to input one character at a time

This field is connected to the formBuilder input interests: formBuilder.array([ ['', Validators.required], ]) It seems like there may be an issue with how my form is linked in the template. Is this method incorrect? How should a Form Array ...

Is your Typescript struggling to infer types correctly?

I created a function that converts an Array into a Map: function toMap<T,TKey,TElement>(items: Array<T>, keySelector: (item: T) => TKey, elementSelector: (item: T) => TElement ): Map<TKey,TElement> { var ma ...

MyApp is encountering issues resolving all parameters

I'm encountering an issue that none of the other similar questions have been able to help me solve. Can anyone offer assistance? I've already attempted removing parameters one by one, but I'm still stuck. Can't resolve all parameters f ...

Vue.js - The error message "$slots have 'el' is null" indicates a problem with the element in

When trying to access the Vuejs $slots instance, I encounter el = null, but type = "div" Here is the template: <slot name="head"> <h1> {{ text }} </h1> </slot> And in the script section: ... ...

Getting the Most Out of .find() in Angular 4

Despite reading various similar questions, I'm still struggling to make the .find() function work in my application. I have a service with the following API: export class VehicleService { private defUrl = 'API'; constructor(private ht ...

Dealing with Errors in Node.js Using Typescript and Express

As I embark on my journey with Node and Typescript, a question has cropped up in my mind. There are two key files in my project: server.ts import express = require('express'); import IConfiguration from "../config/config"; export default clas ...

Is there a method in JavaScript and Vue.js to detect when a drag event exits the boundaries of a container?

Currently, I am in the process of incorporating a drag and drop feature in my todo app built with Vue.js. This functionality allows users to freely move todo items within the list by dragging them either before or after other elements. The challenge is to ...

Adjusting an item according to a specified pathway

I am currently working on dynamically modifying an object based on a given path, but I am encountering some difficulties in the process. I have managed to create a method that retrieves values at a specified path, and now I need to update values at that pa ...

Preview docx, PPTX, and XLSX files in angular before transferring them to the server

Is there a way to preview a doc file before uploading it? I can successfully view pdf, png, and jpg files in an iframe using their base64 data. But for Doc, Docx, PPTX, and XLSX files, I am unable to display them in the iframe. <input type="file&qu ...

Using Typescript: How to pass a function as an argument in another function

In my angular application, I am working on the following setup: this.myServiceOne.getDataOne().subscribe((res => {this.variableOne= res})); this.myServiceTwo.getDataTwo().subscribe((res => {this.variableTwo= res})); this.myServiceThree.getDataThree( ...

Transfer information between different classes and proceed to loop through the updated class directly from the html webpage

The Scenario In my angular 7 application, I am fetching data from a web API in JSON format. The app is functioning correctly, but I believe I am making excessive API calls and can optimize it to just one call. Custom Class: export class customClass ...

Obtain the Vue Class Component Decorator's method within a Watcher

My question is similar to the ones raised in this and this GitHub issue, but unfortunately they were closed without a solution. I am working with Vue and TypeScript using Vue Class Components. I need to access a method of my Vue class from inside a watche ...

Issue: Unable to locate a matching object '[object Object]' of type 'object'. NgFor can solely bind to data structures like Arrays and Iterables

I am facing an error that says "Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays." I am trying to create a Notification list but I can't figure out w ...