Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vue/require-default-prop should not trigger when type is x | undefined without default value #2475

Open
Aspyryan opened this issue Jun 12, 2024 · 5 comments

Comments

@Aspyryan
Copy link

Aspyryan commented Jun 12, 2024

What rule do you want to change?
vue/require-default-prop

Does this change cause the rule to produce more or fewer warnings?
Is will provide less warnings if the type is already defined as undefined.

How will the change be implemented? (New option, new default behavior, etc.)?
Could be an option to not throw the error / warning when props is not required and has a undefined type set

Please provide some example code that this change will affect:

const props = withDefaults(
  defineProps<{
    // Is not throwing warning because default is set
    modelValue?: string;
    // Should throw warning because no default is set
    label?: string;
    // Should not throw warning because undefined is allowed
    propertyName?: string | undefined;
  }>(),
  {
    modelValue: 'test',
  },
);

What does the rule currently do for this code?
Throws a warning at the propertyName prop

What will the rule do after it's changed?
Will not complain about the propertyName prop

Additional context
If needed, I can look into it myself but I will need to be pointed to the correct files :)

@FloEdelmann FloEdelmann changed the title vue/require-default-prop should not trigger when type is 'x | undefined' without default value vue/require-default-prop should not trigger when type is x | undefined without default value Jun 12, 2024
@FloEdelmann
Copy link
Member

I'm not sure if I agree; every optional property (with a ?) automatically has | undefined added to its type, so it would render the rule useless if every optional prop would not be required to have a default value then.

@Aspyryan
Copy link
Author

Hmm yea I get that, is it typescript doing the automatic undefined? can we somehow disable that and then apply the rule?

@FloEdelmann
Copy link
Member

Yes it is. I don't think we can turn that off.

@higherorderfunctor
Copy link

https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes

I'm using it in my projects to force an explicit undefined on optional properties where expected.

Not sure if it helps with this exact situation, but there is support in TS for it.

One of our dependencies requires it: https://github.com/Effect-TS/effect/tree/main/packages/schema#requirements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants