Skip to content

Commit c22aa49

Browse files
committed
fix: add lang="ts" attribute during migration if needed
fixes #14219
1 parent 438de04 commit c22aa49

File tree

8 files changed

+57
-0
lines changed

8 files changed

+57
-0
lines changed

.changeset/seven-clocks-pull.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: add `lang="ts"` attribute during migration if needed

packages/svelte/src/compiler/migrate/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,14 @@ export function migrate(source, { filename, use_ts } = {}) {
326326
props_declaration = `\n${indent}${props_declaration}`;
327327
str.appendRight(insertion_point, props_declaration);
328328
}
329+
330+
if (
331+
state.uses_ts &&
332+
parsed.instance &&
333+
!parsed.instance.attributes.some((attr) => attr.name === 'lang')
334+
) {
335+
str.appendRight(parsed.instance.start + '<script'.length, ' lang="ts"');
336+
}
329337
}
330338

331339
/**
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
use_ts: true
5+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
// script tag but no lang="ts", because for example only imports present
3+
</script>
4+
5+
<slot />
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script lang="ts">
2+
interface Props {
3+
children?: import('svelte').Snippet;
4+
}
5+
6+
let { children }: Props = $props();
7+
// script tag but no lang="ts", because for example only imports present
8+
</script>
9+
10+
{@render children?.()}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
use_ts: true
5+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
/** @type {ShouldNotUseTSBecauseImUsingJsDoc} */
3+
export let data;
4+
</script>
5+
6+
<slot />
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script>
2+
3+
/**
4+
* @typedef {Object} Props
5+
* @property {ShouldNotUseTSBecauseImUsingJsDoc} data
6+
* @property {import('svelte').Snippet} [children]
7+
*/
8+
9+
/** @type {Props} */
10+
let { data, children } = $props();
11+
</script>
12+
13+
{@render children?.()}

0 commit comments

Comments
 (0)