-
-
Notifications
You must be signed in to change notification settings - Fork 213
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Since upgrading to 0.7.20 generics stopped working for me when using the components outside of the library package itself. They generic types are inferred to unknown.
Inside the package (Sveltekit library project) everything works nicely.
I downgraded to 0.7.19 and the generics works again, so it seems that bug occured in 0.7.20.
The component looks like this
<script lang="ts" generics="TOption">
let {
options,
renderOption,
optionToString,
...props
}: Omit<InputProps<TOption>, "adornmentEnd" | "autoComplete" | "hideCursor"> & {
options: TOption[];
optionToString?: (option: TOption | undefined) => string;
renderOption?: Snippet<[TOption]>;
} = $props();
</script>
It seems like the generated code is different
This is the code 0.7.20 produced
import type { InputProps } from './InputProps.js';
import type { Snippet } from 'svelte';
declare class __sveltets_Render<TOption> {
props(): Omit<InputProps<TOption>, "adornmentEnd" | "autoComplete" | "hideCursor"> & {
options: TOption[];
optionToString?: ((option: TOption | undefined) => string) | undefined;
renderOption?: Snippet<[TOption]> | undefined;
};
events(): {};
slots(): {};
bindings(): "value";
exports(): {};
}
interface $$IsomorphicComponent {
new <TOption>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TOption>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TOption>['props']>, ReturnType<__sveltets_Render<TOption>['events']>, ReturnType<__sveltets_Render<TOption>['slots']>> & {
$$bindings?: ReturnType<__sveltets_Render<TOption>['bindings']>;
} & ReturnType<__sveltets_Render<TOption>['exports']>;
<TOption>(internal: unknown, props: ReturnType<__sveltets_Render<TOption>['props']> & {}): ReturnType<__sveltets_Render<TOption>['exports']>;
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
}
declare const Dropdown: $$IsomorphicComponent;
type Dropdown<TOption> = InstanceType<typeof Dropdown<TOption>>;
export default Dropdown;
This is the working code from 0.7.19
import type { InputProps } from './InputProps.js';
import type { Snippet } from 'svelte';
declare class __sveltets_Render<TOption> {
props(): Omit<InputProps<TOption>, "adornmentEnd" | "autoComplete" | "hideCursor"> & {
options: TOption[];
optionToString?: ((option: TOption | undefined) => string) | undefined;
renderOption?: Snippet<[TOption]> | undefined;
};
events(): {} & {
[evt: string]: CustomEvent<any>;
};
slots(): {};
bindings(): "value";
exports(): {};
}
interface $$IsomorphicComponent {
new <TOption>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TOption>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TOption>['props']>, ReturnType<__sveltets_Render<TOption>['events']>, ReturnType<__sveltets_Render<TOption>['slots']>> & {
$$bindings?: ReturnType<__sveltets_Render<TOption>['bindings']>;
} & ReturnType<__sveltets_Render<TOption>['exports']>;
<TOption>(internal: unknown, props: ReturnType<__sveltets_Render<TOption>['props']> & {
$$events?: ReturnType<__sveltets_Render<TOption>['events']>;
}): ReturnType<__sveltets_Render<TOption>['exports']>;
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
}
declare const Dropdown: $$IsomorphicComponent;
type Dropdown<TOption> = InstanceType<typeof Dropdown<TOption>>;
export default Dropdown;
Reproduction
Create a component with the code above and generate typescript files.
Expected behaviour
The behavior of 0.7.19
System Info
- OS: Mac OS
- IDE: VSCode, Cursor and Webstorm (all affected)
Which package is the issue about?
svelte2tsx
Additional Information, eg. Screenshots
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working