Skip to content
← Back to rules

vue/no-required-prop-with-default Suspicious

💡 A suggestion is available for this rule.

何をするか

デフォルト値を持つプロパティはオプションであることを強制する。

なぜ悪いのか

プロパティにデフォルト値が宣言されている場合、それが必須(required)かどうかに関係なく、実際の使用では常に省略可能である。その状況では、デフォルト値が適用される。つまり、デフォルト値を持つ必須プロパティは、実質的にオプションプロパティと同じである。

このルールに違反する誤りなコード例:

vue
<script setup lang="ts">
const props = withDefaults(
  defineProps<{
    name: string | number;
    age?: number;
  }>(),
  {
    name: "Foo",
  },
);
</script>

このルールに従った正しいコード例:

vue
<script setup lang="ts">
const props = withDefaults(
  defineProps<{
    name?: string | number;
    age?: number;
  }>(),
  {
    name: "Foo",
  },
);
</script>

使い方

設定ファイルまたは CLI でこのルールを有効化するには、以下の方法を使用できます:

json
{
  "plugins": ["vue"],
  "rules": {
    "vue/no-required-prop-with-default": "error"
  }
}
bash
oxlint --deny vue/no-required-prop-with-default --vue-plugin

参照