Upgrade to TypeScript 7 (#34208)

* Upgrade to TypeScript 7

for massive tsc speed gains

Those on WebStorm will want to upgrade to EAP to reap the benefits of the new TSGo compiler

Some things (module-api & shared-components) which utilise unplugin-dts (and api-extractor) need to hold a copy of ts6 for its conventional lib format and API. TS7 ships with no API until TS7.1.

Other things which use eslint also need ts6 for typescript-eslint.

Some type changes were necessary as TS7 caught some issues.

* Add knip exception

* Fix bad merge
This commit is contained in:
Michael Telatynski
2026-07-14 08:09:03 +00:00
committed by GitHub
parent c6b52b8a73
commit b6859885a3
18 changed files with 523 additions and 244 deletions
+3 -2
View File
@@ -39,15 +39,16 @@
"devDependencies": {
"@matrix-org/react-sdk-module-api": "^2.5.0",
"@microsoft/api-extractor": "^7.49.1",
"@types/node": "catalog:",
"@types/node": "catalog:ts6",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@types/semver": "^7.5.8",
"@typescript/native": "catalog:",
"matrix-widget-api": "^1.17.0",
"rollup-plugin-external-globals": "^0.13.0",
"semver": "^7.6.3",
"shared-types": "workspace:*",
"typescript": "catalog:",
"typescript": "catalog:ts6",
"unplugin-dts": "catalog:",
"vite": "catalog:",
"vitest": "catalog:"
+4
View File
@@ -30,6 +30,10 @@ export default defineConfig({
dts({
bundleTypes: {
configPath: "./api-extractor.json",
invokeOptions: {
localBuild: !!process.env.CI,
typescriptCompilerFolder: resolve(require.resolve("@typescript/old"), "../.."),
},
},
}),
externalGlobals({
+2 -1
View File
@@ -104,6 +104,7 @@
"@types/lodash": "^4.17.20",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@typescript/native": "catalog:",
"@vector-im/compound-web": "catalog:",
"@vitejs/plugin-react": "catalog:",
"@vitest/browser-playwright": "catalog:",
@@ -113,7 +114,7 @@
"typedoc": "^0.28.16",
"typedoc-plugin-markdown": "^4.9.0",
"typedoc-plugin-missing-exports": "^4.1.2",
"typescript": "catalog:",
"typescript": "catalog:ts6",
"unplugin-dts": "catalog:",
"vite": "catalog:",
"vite-plugin-node-polyfills": "^0.28.0",
@@ -7,7 +7,8 @@
"esModuleInterop": true,
"strict": true,
"types": [],
"allowSyntheticDefaultImports": true
"allowSyntheticDefaultImports": true,
"skipLibCheck": true
},
"include": ["vite.config.ts", "vitest.config.ts", "../../vitest.config.ts"]
}
+6 -1
View File
@@ -96,7 +96,12 @@ export default defineConfig({
react(),
layerCssAssets(),
dts({
bundleTypes: true,
bundleTypes: {
invokeOptions: {
localBuild: !!process.env.CI,
typescriptCompilerFolder: resolve(require.resolve("@typescript/old"), "../.."),
},
},
include: ["src/**/*.{ts,tsx}"],
exclude: ["src/**/*.test.{ts,tsx}", "src/**/*.stories.{ts,tsx}"],
copyDtsFiles: false,