プログラミング
プログラミング
  • 2024/04/18
  • 2024/09/17

Vue3 SFCでTypeScriptの型ジェネリクスを使う

Vue3 script setup構文ではコンポーネントにジェネリクスを定義することができます。その方法を簡単にまとめました。

Vue SFCで型ジェネリクスを使う


基本の使い方

VueのSFCで propsemit を定義する際、次のように型ジェネリクスを用いることができます:

<script setup lang="ts" generics="T">
import { defineProps } from "vue";

interface Props {
  val: T;
}

const { val } = defineProps<Props>();
</script>

型制約をつける

従来のTSと同じく、extends キーワードで型に制約をつけることもできます。

<script setup lang="ts" generics="T extends string | number">
import { defineProps } from "vue";

interface Props {
  val: T;
}

const { val } = defineProps<Props>();
</script>

ユースケース


この例では、planets に渡した配列を型推論して、その値から planet の型を要素のユニオンとして生成します。

<template>
  <ChildComponent :planets='["mercury", "venus", "earth", "mars", "jupyter"]' planet="mercury">
</template>
<script setup lang="ts" generics="T">
import { defineProps } from "vue";

interface Props {
  planets: T[];
  planet: T;   // "mercury" | "venus" | "earth" | "mars" | "jupyter"
}

const { planets, planet } = defineProps<Props>();
</script>

参考


<script setup> | Vue.js

Vue.jsでジェネリックコンポーネントを使う

関連記事


    記事がありません

Shota Inoue
Shota Inoue

大学生 | 化学・Webプログラミング・統計学など