Vyhledávání na webu

typescript - Chyby při typování vlastností pomocí rozhraní ve Vue 3 (Vue: Nepopisované volání funkcí nemusí přijímat typové argumenty.)


Chci typovat props pomocí rozhraní, toto je můj kód a funguje správně. Ale:

defineProps<Props>();

Je zvýrazněno touto chybou (Vue: Neotipované volání funkcí nemusí přijímat typové argumenty.)

<script setup lang="ts">
import type { Client } from "@/clients/interfaces/client.interface";

interface Props {
  clients: Client[];
}

const props = defineProps<Props>();
</script>

Čtením a hledáním jsem se pokusil nakonfigurovat .eslintrc s

  env: {
    'vue/setup-compiler-macros': true
  }

a instalace "@vue/eslint-config-typescript": "^12.0.0"

Používám WebStorm, nevím, jestli je to relevantní. Děkuji za pomoc.

Odpověď č. 1

V mém případě nastavení IDE ukazovalo na nesprávný TypeScript. Jen se ujistěte, že nastavení TypeScriptu v IDE ukazuje na správnou verzi:

Odpověď č. 2

Podle dokumentace je syntaxe použitá v popisu problému správná, ale ESLint ji nemá rád.

Řešení, které jsem implementoval: Jedna z dalších možností v dokumentaci, např. z kódu:

<script setup lang="ts">
interface Book {
  title: string
  author: string
  year: number
}

const props = defineProps<{
  book: Book
}>()
</script>

Tímto způsobem nedostanu chybu ESLint, mohu deklarovat typ vlastnosti s odpovídajícím rozhraním a bez zdlouhavosti deklarování každé vlastnosti s jejím typem a požadavkem atd.

Související články