{"ref":"capability:ui5-typescript","page":"/capabilities/ui5-typescript","json":"/capabilities/ui5-typescript.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"ui5-typescript","name":"TypeScript support","domain":"developer-experience","ecosystems":["ui5"],"universal":false,"description":"Writing apps and libraries in TypeScript — the type definitions, the module syntax the loader expects, and the build step that gets from one to the other.","short":"Writing UI5 apps and libraries in TypeScript","core_coverage":{"state":"core-and-community","assessed_at":"2026-08-31","what_core_does":"Official type definitions are published for the framework, with guidance for apps and control libraries.","where_it_stops":"It stops at the types. Getting TypeScript through the UI5 build is a tooling extension, not part of the framework.","community_adds":"Build tasks and a Babel transform from [UI5 community](actor:ui5-community) and independent authors turn TypeScript into the `sap.ui.define` syntax the loader expects, [ui5-task-transpile](artifact:ui5-community-ui5-task-transpile) among them, and a task generates declaration files for a library written in JavaScript. [ui5-community-jsx-runtime](artifact:ui5-community-jsx-runtime) types views written as `.tsx`, and SAP's [UI5 MCP server](artifact:ui5-mcp-server) hands an agent the guidelines for converting a JavaScript app or control to TypeScript.","sources":[{"url":"https://ui5.sap.com/#/topic/a7ee9617bc794b6fad21e4df38e31128","title":"SAPUI5 — TypeScript Support","checked":"2026-08-31","quote":"TypeScript is an extension of JavaScript that adds type information to the language."}],"relationship":"narrow-by-design"},"coverage_by_flavor":{"web-components":{"state":"core-only","assessed_at":"2026-09-14","what_core_does":"[@ui5/webcomponents](artifact:ui5-webcomponents) ships its own TypeScript definitions rather than a separate types package, for both building a component and consuming one, stable since version 1.19.0.","where_it_stops":"It stops short of JSX: a component such as `<ui5-input>` used directly in a `.tsx` file still needs its tag added to `JSX.IntrinsicElements` by hand, because TypeScript does not recognise a custom element on its own.","sources":[{"url":"https://ui5.github.io/webcomponents/docs/advanced/typescript-support/","title":"TypeScript Support | UI5 Web Components","checked":"2026-10-14","quote":"TypeScript Support is enabled for both component development and component consumption."},{"url":"https://ui5.github.io/webcomponents/docs/frameworks/React/","title":"UI5 Web Components & React | UI5 Web Components","checked":"2026-09-14","quote":"TypeScript's JSX.IntrinsicElements only includes standard HTML tags by default."}]}},"framing_by_flavor":{"web-components":{"description":"Types ship with the components themselves: importing from [@ui5/webcomponents](artifact:ui5-webcomponents) or from [UI5 Web Components for React](https://github.com/UI5/webcomponents-react) brings its definitions along, with no separate types package and no UI5 loader or build step to bridge."}},"history":[{"date":"2026-09-14","field":"coverage_by_flavor.web-components","from":null,"to":"core-only","reason":"UI5 Web Components ships stable TypeScript definitions for the components themselves (development and consumption); no ui5-door artifact in the graph yet models the library or states the web-components flavor for this capability, so the state rests on the project's own documentation rather than a provider edge."},{"date":"2026-09-14","field":"framing_by_flavor.web-components","from":null,"to":"types ship with the component library, not a separate package","reason":"The freestyle description is about a published types package and a UI5 build step; neither applies here, since the Web Components and their React wrapper carry their own definitions."},{"date":"2026-10-14","field":"coverage_by_flavor.web-components.what_core_does and framing_by_flavor.web-components","from":"UI5 Web Components, linked to github.com/SAP/ui5-webcomponents","to":"[@ui5/webcomponents](artifact:ui5-webcomponents)","reason":"The library is an entry in the graph and provides this capability, so both paragraphs name it by its package name and link the entry, which the 2026-09-14 reasons above said did not exist yet. The two outward addresses they used are the organisation the project has left: github.com/SAP/ui5-webcomponents redirects to github.com/UI5/webcomponents. The React wrapper is not an entry, so it keeps an outward link, at the address its own published package names, github.com/UI5/webcomponents-react. No claim changed: the typescript-support page still reads \"TypeScript Support is enabled for both component development and component consumption\" and still dates stable definitions to 1.19.0, read again on 2026-10-14. Who provides the capability was not surveyed again, so the state and assessed_at stand."},{"date":"2026-10-17","field":"description","from":"Writing UI5 apps and libraries in TypeScript — the type definitions, the module syntax the loader expects, and the build step that gets from one to the other.","to":"Writing apps and libraries in TypeScript — the type definitions, the module syntax the loader expects, and the build step that gets from one to the other.","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.ui5. Maintainer-requested scope audit."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":null,"to":"Build tasks and a Babel transform from UI5 community and independent authors turn TypeScript into the sap.ui.define syntax; a task generates declaration files; a JSX runtime types .tsx views; SAP's UI5 MCP server hands an agent the JavaScript-to-TypeScript conversion guidelines.","reason":"Reassessed against the graph (check:capabilities): four providers arrived after the block was assessed (dts-generator task, Babel transform, JSX runtime, UI5 MCP server) and the text named none. The state stays core-and-community: the block's sourced what_core_does keeps the core present and community-origin providers count for the ui5 door. assessed_at and relationship stand."}],"drafted_with_ai":true,"framing_by_ecosystem":{"ui5":{"description":"Writing UI5 apps and libraries in TypeScript — the type definitions, the module syntax the loader expects, and the build step that gets from one to the other."}}},"sap_delivery":{"door":"ui5","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:openui5-core","name":"@openui5/sap.ui.core","json":"/artifacts/openui5-core.json"},{"ref":"artifact:ui5-mcp-server","name":"@ui5/mcp-server","json":"/artifacts/ui5-mcp-server.json"},{"ref":"artifact:ui5-webcomponents","name":"@ui5/webcomponents","json":"/artifacts/ui5-webcomponents.json"}]},"by_flavor":{"freestyle":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:openui5-core","name":"@openui5/sap.ui.core","json":"/artifacts/openui5-core.json"},{"ref":"artifact:ui5-mcp-server","name":"@ui5/mcp-server","json":"/artifacts/ui5-mcp-server.json"}]},"fiori-elements":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:ui5-mcp-server","name":"@ui5/mcp-server","json":"/artifacts/ui5-mcp-server.json"}]},"web-components":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:ui5-webcomponents","name":"@ui5/webcomponents","json":"/artifacts/ui5-webcomponents.json"}]}}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:openui5-core","name":"@openui5/sap.ui.core","json":"/artifacts/openui5-core.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-community-jsx-runtime","name":"@ui5-community/jsx-runtime","json":"/artifacts/ui5-community-jsx-runtime.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-mcp-server","name":"@ui5/mcp-server","json":"/artifacts/ui5-mcp-server.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-webcomponents","name":"@ui5/webcomponents","json":"/artifacts/ui5-webcomponents.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-community-babel-plugin-transform-modules-ui5","name":"babel-preset-transform-ui5","json":"/artifacts/ui5-community-babel-plugin-transform-modules-ui5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:mauriciolauffer-ui5-task-dts-generator","name":"ui5-task-dts-generator","json":"/artifacts/mauriciolauffer-ui5-task-dts-generator.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-task-transpile","name":"ui5-task-transpile","json":"/artifacts/ui5-community-ui5-task-transpile.json","ecosystem":"ui5","origin_ring":"community-org"}],"samples":[{"ref":"artifact:ui5-community-hacking-away-sampleapp","name":"hacking-away-sampleapp","json":"/artifacts/ui5-community-hacking-away-sampleapp.json"},{"ref":"artifact:sap-samples-ui5-typescript-control-library","name":"SAP-samples/ui5-typescript-control-library","json":"/artifacts/sap-samples-ui5-typescript-control-library.json"},{"ref":"artifact:sap-samples-ui5-typescript-helloworld","name":"SAP-samples/ui5-typescript-helloworld","json":"/artifacts/sap-samples-ui5-typescript-helloworld.json"},{"ref":"artifact:sap-samples-ui5-typescript-tutorial","name":"SAP-samples/ui5-typescript-tutorial","json":"/artifacts/sap-samples-ui5-typescript-tutorial.json"},{"ref":"artifact:mariokernich-ui5-monorepo-showcase","name":"ui5-monorepo-showcase","json":"/artifacts/mariokernich-ui5-monorepo-showcase.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsapp","name":"ui5-tsapp","json":"/artifacts/ui5-community-showcase-ui5-tsapp.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsapp-webc","name":"ui5-tsapp-webc","json":"/artifacts/ui5-community-showcase-ui5-tsapp-webc.json"},{"ref":"artifact:ui5-community-showcase-ui5-tslib","name":"ui5-tslib","json":"/artifacts/ui5-community-showcase-ui5-tslib.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsmodule","name":"ui5-tsmodule","json":"/artifacts/ui5-community-showcase-ui5-tsmodule.json"}],"explained_by":[{"ref":"content:devtoberfest-2026-ui5-views-type-safe-tsx","name":"UI5 Views, Reimagined: Type-Safe TSX for a Modern Dev Experience","json":"/content/devtoberfest-2026-ui5-views-type-safe-tsx.json"},{"ref":"content:typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem","name":"TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)","json":"/content/typescript-sheriff-how-can-i-use-typescript-in-the-sap-ecosystem.json"},{"ref":"content:a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3","name":"A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3","json":"/content/a-chatgpt-like-chat-app-with-cap-and-sapui5-part-3.json"},{"ref":"content:debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code","name":"debug a CAP app with UI5 TypeScript UI component with VS Code","json":"/content/debug-a-cap-app-with-ui5-typescript-ui-component-with-vs-code.json"}],"normative_context":[]}}