SAP / ui5-typescript

Tooling to enable TypeScript support in SAPUI5/OpenUI5 projects
https://sap.github.io/ui5-typescript
Apache License 2.0
201 stars 28 forks source link

ts-interface-generator: crash when parent class is also custom and has no constructors added yet #346

Open akudev opened 2 years ago

akudev commented 2 years ago

Reported in https://github.com/SAP/ui5-typescript/issues/337

Revest117 commented 2 years ago

Hi,

i have a similar error:

C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:97
                                throw new Error(`${statement.name ? statement.name.text : ""} inherits from ${interestingBaseClass} but the parent class ${typeChecker.getFullyQualifiedName(type.getSymbol())} seems to have no settings type`);
                                ^

Error: App inherits from EventProvider but the parent class "sap/ui/core/mvc/Controller".Controller seems to have no settings type
    at C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:97:39
    at Array.forEach (<anonymous>)
    at C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:69:46
    at Array.forEach (<anonymous>)
    at C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:67:43
    at Array.forEach (<anonymous>)
    at getManagedObjects (C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:63:27)
    at generateInterfaces (C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\interfaceGenerationHelper.js:39:17)
    at C:\Users\heess_k\Documents\TypeScript Projects\ui5-typescript-helloworld\node_modules\@ui5\ts-interface-generator\dist\generateTSInterfaces.js:133:60
    at Array.forEach (<anonymous>)
The terminal process "C:\WINDOWS\System32\cmd.exe /d /c npm run watch:controls" terminated with exit code: 1.

I used the demo project in the custom-controls branch: ui5-typescript-helloworld

akudev commented 2 years ago

@Revest117: thanks for reporting! This particular issue where the settings type is missing but actually not needed at all is now fixed in the newly released version 0.4.2.

The overall issue when e.g. two custom controls inherit from each other and are added at the same time is still open, so I'll keep this issue report open.

akudev commented 4 weeks ago

With https://github.com/SAP/ui5-typescript/pull/474 being merged now the behavior will probably improve or at least change. With no constructor in the direct parent class, it will walk up further the class hierarchy. A crash should be prevented, but initially a wrong settings type may be used. I think this will be corrected after further runs of the generator. The "real" solution would be to first collect inheritance information to construct the proper interface generation order, but if this behaves benign, as assumed above, the importance of implementing this is reduced a bit.