From ec2c3f9f250bf05112a9af10e6ebc71508b4d4ca Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Sat, 31 Dec 2022 07:21:12 +0800 Subject: [PATCH] fix(vue-component-meta): resolve `@todo should not be required` close #2256 --- vue-language-tools/vue-component-meta/src/index.ts | 2 +- .../vue-component-meta/tests/index.spec.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vue-language-tools/vue-component-meta/src/index.ts b/vue-language-tools/vue-component-meta/src/index.ts index 0804c5100..1b019cde9 100644 --- a/vue-language-tools/vue-component-meta/src/index.ts +++ b/vue-language-tools/vue-component-meta/src/index.ts @@ -472,7 +472,7 @@ function createSchemaResolvers( name: tag.name, text: tag.text?.map(part => part.text).join(''), })), - required: !Boolean((prop.declarations?.[0] as ts.ParameterDeclaration)?.questionToken ?? false), + required: !(prop.flags & ts.SymbolFlags.Optional), type: typeChecker.typeToString(subtype), rawType: rawType ? subtype : undefined, schema, diff --git a/vue-language-tools/vue-component-meta/tests/index.spec.ts b/vue-language-tools/vue-component-meta/tests/index.spec.ts index e81443edd..e331b328d 100644 --- a/vue-language-tools/vue-component-meta/tests/index.spec.ts +++ b/vue-language-tools/vue-component-meta/tests/index.spec.ts @@ -361,7 +361,7 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ expect(baz).toBeDefined(); expect(baz?.default).toBeUndefined(); - // expect(baz?.required).toBeFalsy(); // @todo should not be required + expect(baz?.required).toBeFalsy(); expect(baz?.type).toEqual('string | undefined'); expect(xfoo).toBeDefined(); @@ -371,12 +371,12 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ expect(xbar).toBeDefined(); // expect(xbar?.default).toBe('""'); // @toto should be empty string - // expect(xbar?.required).toBeFalsy(); // @todo should not be required + expect(xbar?.required).toBeFalsy(); expect(xbar?.type).toEqual('string | undefined'); expect(xbaz).toBeDefined(); expect(xbaz?.default).toBeUndefined(); - // expect(baz?.required).toBeFalsy(); // @todo should not be required + expect(baz?.required).toBeFalsy(); expect(xbaz?.type).toEqual('string | undefined'); }); @@ -408,7 +408,7 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ expect(baz).toBeDefined(); expect(baz?.default).toBeUndefined(); expect(baz?.type).toEqual('string | undefined'); - // expect(baz?.required).toBeFalsy(); // @todo should not be required + expect(baz?.required).toBeFalsy(); expect(xfoo).toBeDefined(); expect(xfoo?.default).toBeUndefined(); @@ -418,12 +418,12 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ expect(xbar).toBeDefined(); // expect(xbar?.default).toBe('""'); // @todo should be empty string expect(xbar?.type).toEqual('string | undefined'); - // expect(xbar?.required).toBeFalsy(); // @todo should not be required + expect(xbar?.required).toBeFalsy(); expect(xbaz).toBeDefined(); expect(xbaz?.default).toBeUndefined(); expect(xbaz?.type).toEqual('string | undefined'); - // expect(baz?.required).toBeFalsy(); // @todo should not be required + expect(baz?.required).toBeFalsy(); expect(hello).toBeDefined(); expect(hello?.default).toEqual('"Hello"');