Skip to content

[ts-interface-generator] interface generation fails if application contains mixins #480

@C5233991

Description

@C5233991

Describe the bug
Running npx @ui5/ts-interface-generator command in project containing mixins causing following error:

AppData\Local\npm-cache\_npx\a388873ad1487e68\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:172
                                throw new Error(`Type '${typeNode.getText()}' referenced in ${sourceFile.fileName} in the inheritance clause '${heritageClause.getFullText()}' could not be resolved.
                                ^

Error: Type 'ClassA(ClassB)' referenced in ClassC.ts in the inheritance clause ' extends ClassA(ClassB)' could not be resolved.
Check the respective line in the source code: ts there an error for this type? Make sure the type is properly imported.
If a working "import" is not possible and it is a UI5 type (or type from another library), the issue could be caused by the respective type definitions not being available. They must be found by the TypeScript compiler according to the configuration in tsconfig. To verify this step-by-step, you can do the following:
1. Check whether the (UI5 or other) types are added as dependency in package.json (or available as transitive dependency)
2. Check inside which "node_modules" folder the types are actually available - if they are not, check whether "npm install" (or "yarn" etc.) has run successfully - maybe re-run it
3. Check the "tsconfig.json" file: types outside the default "@types" package must be explicitly added in the "types" or "typeRoots" section. Is the name and path correct?
One known cause of this error is that the "typeRoots" setting in tsconfig.json has wrong paths, which are not actually pointing to the correct location of the type definitions.
Or is there a different reason why this type would not be known?
    at AppData\Local\npm-cache\_npx\a388873ad1487e68\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:172:39
    at Array.forEach (<anonymous>)
    at AppData\Local\npm-cache\_npx\a388873ad1487e68\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:168:46
    at Array.forEach (<anonymous>)
    at AppData\Local\npm-cache\_npx\a388873ad1487e68\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:166:43

This happens whenever project contains file with mixin akin to:

export default class ClassC extends ClassA(ClassB) {
// ...
}

Current workaround is to have separate tsconfig-generate-ts-interfaces.json file which excludes files containin mixin, and pass this file to --config parameter of interface generator.

Expected behavior
Successful type generation for project containing mixins.

Additional context
Reproduced in @ui5/ts-interface-generator@0.9.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    ts-interface-generatorRelated to the ts-interface-generator sub-package

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions