kolibri icon indicating copy to clipboard operation
kolibri copied to clipboard

🐞 Bug: Types werden teilweise nicht korrekt aufgelöst

Open Chrisdo82 opened this issue 1 year ago • 6 comments

Note

  • [x] Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgebe.

Fehlermeldung

Beschreibung des Fehlers

Der type von der Property _links der KolBreadcrumb Komponente wird nicht korrekt aufgelöst. Stattdessen wird nach any gecastet.

Reproduktion

  • Link zu StackBlitz: https://stackblitz.com/edit/vitejs-vite-9dki46?file=src%2FApp.tsx

Schritte zum Reproduzieren des Verhaltens:

  • hovere über die _link-Property in der App.tsx Zeile 9.

Erwartetes Verhalten

Der Type wird korrekt aufgelöst.

Screenshots

Bildschirmfoto 2023-10-30 um 12 26 37

Chrisdo82 avatar Oct 30 '23 11:10 Chrisdo82

Danke @Chrisdo82: Das ist aber bei Version 1.5 und 1.6 auch so.

https://stackblitz.com/edit/vitejs-vite-9dki46?file=src%2FApp.tsx

Gab es irgendein nennenswertes Vite-Update? Oder liegt es an der tsconfig.json? Wir verwenden Webpack, da ist alles i.O.

image

Hier unser JS-Days Projekt: https://github.com/public-ui/js-days-2023 (Vite + selber Problem)

Hier den tsconfig.json von Webpack:

{
	"compilerOptions": {
		"experimentalDecorators": true,
		"pretty": true,
		"target": "ESNext",
		"module": "ESNext",
		"preserveConstEnums": true,
		"sourceMap": true,
		"preserveSymlinks": true,
		"moduleResolution": "node",
		"lib": ["es2017", "dom"],
		"types": ["node", "react", "react-dom"],
		"typeRoots": ["node_modules/@types", "src/types"],
		"noUnusedLocals": true,
		"resolveJsonModule": true,
		"noEmit": true,
		"skipLibCheck": true,
		"noUnusedParameters": true,
		"noImplicitReturns": true,
		"noFallthroughCasesInSwitch": true,
		"forceConsistentCasingInFileNames": true,
		"importHelpers": true,
		"removeComments": true,
		"strict": true,
		"allowSyntheticDefaultImports": true,
		"jsx": "react",
		"jsxFactory": "React.createElement",
		"jsxFragmentFactory": "React.Fragment"
	},
	"include": ["src/**/*"]
}

Hier die tsconfig.json von Vite:

{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true
  },
  "include": ["src"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

deleonio avatar Oct 30 '23 13:10 deleonio

@sdvg bitte mal reproduzieren und das Ergebnis dokumentieren.

deleonio avatar Mar 26 '24 12:03 deleonio

Todo:

  • [ ] Nachprüfen
  • [ ] Bei Problemen neues Ticket anlegen

laske185 avatar May 28 '24 12:05 laske185

Ich habe den StackBlitz testweise einmal auf die neueste KoliBri-Version aktualisiert: https://stackblitz.com/edit/vitejs-vite-dcajnp

Ergebnis: Stackblitz und ein lokales, frisch installiertes VS Code lösen die Types nicht richtig auf 🙅 image image Der Build funktioniert jedoch einwandfrei und Intellij IDEA hat keine Probleme, die Types aufzulösen ✅ image

sdvg avatar May 29 '24 11:05 sdvg

@Chrisdo82, @mello-r,

ich habe mir das Beispiel jetzt auch noch einmal ausgecheckt und unter Windows einmal im VSCode und einmal im Intellij geöffnet.

  • VSCode löst die Typen nicht immer auf
  • Intellij löst hingegen die Typen auf

deleonio avatar May 31 '24 07:05 deleonio

@sdvg @deleonio Ist übrigens nicht nur bei BreadcrumbLinkProps so, sondern auch bei MsgPropType.

Ohne es mir genauer anzusehen, vermute ich, dass es an den adopted-style-sheets liegt. Diese werden nicht mit exportiert, TS kann da somit nicht reinschauen und castet diese dann als any.

Chrisdo82 avatar Jun 19 '24 11:06 Chrisdo82

@Chrisdo82: Ich schaue mir das an. Dann würde ich mich gerne mit Dir zusammentelefonieren.

Man muss halt alle Types installieren, die man im Projekt hat. Die Generics sind auf jeden Fall im adopted-style-sheets

deleonio avatar Sep 19 '24 11:09 deleonio

@Chrisdo82 Ich habe mir das Beispiel jetzt genau angeschaut und die Abhängigkeit adopted-style-sheets als devDependency hinzugefügt. Daraufhin wir any tatsächlich aufgelöst.

Da adopted-style-sheets die Generics beinhaltet, die das Architektur-Konzept der WebComponents vorgibt, können die Types aus KoliBri nicht aufgelöst werden. Wir werden somit adopted-style-sheets erstmal als peerDependency hinzufügen.

Hier sind alle Deps auf den neusten Stand: https://stackblitz.com/edit/vitejs-vite-huwv6a?file=src%2Freact.main.tsx,package.json,src%2Fstyle.scss

deleonio avatar Sep 19 '24 21:09 deleonio