-
-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Typescript problematic types after "wrapping" the route #314
Comments
Not sure if this is correct, but I've had success with this patch on this package. diff --git a/Router.d.ts b/Router.d.ts
index e64617ba7997d48654331f3f44791e1d8230e8d0..773c82317d253c103896b83c06446c9c855fc5ce 100644
--- a/Router.d.ts
+++ b/Router.d.ts
@@ -1,6 +1,6 @@
///<reference types="svelte" />
-import {SvelteComponent} from 'svelte'
+import {SvelteComponent, ComponentType} from 'svelte'
import {Readable} from 'svelte/store'
/** Dictionary with route details passed to the pre-conditions functions, as well as the `routeLoading` and `conditionsFailed` events */
@@ -24,7 +24,7 @@ export interface RouteDetail {
/** Detail object for the `routeLoaded` event */
export interface RouteDetailLoaded extends RouteDetail {
/** Svelte component */
- component: typeof SvelteComponent
+ component: ComponentType
/** Name of the Svelte component that was loaded (note: might be minified in production) */
name: string
@@ -34,7 +34,7 @@ export interface RouteDetailLoaded extends RouteDetail {
* This is a Svelte component loaded asynchronously.
* It's meant to be used with the `import()` function, such as `() => import('Foo.svelte')}`
*/
-export type AsyncSvelteComponent = () => Promise<{default: typeof SvelteComponent}>
+export type AsyncSvelteComponent = () => Promise<{default: ComponentType}>
/**
* Route pre-condition function. This is a callback that receives a RouteDetail object as argument containing information on the route that we're trying to load.
@@ -50,7 +50,7 @@ export type RoutePrecondition = (detail: RouteDetail) => (boolean | Promise<bool
/** Object returned by the `wrap` method */
export interface WrappedComponent {
/** Component to load (this is always asynchronous) */
- component: typeof SvelteComponent
+ component: ComponentType
/** Route pre-conditions to validate */
conditions?: RoutePrecondition[]
@@ -152,8 +152,8 @@ export const params: Readable<Record<string, string> | undefined>
// Note: the above is implemented as writable but exported as readable because consumers should not modify the value
/** List of routes */
-export type RouteDefinition = Record<string, typeof SvelteComponent | WrappedComponent> |
- Map<string | RegExp, typeof SvelteComponent | WrappedComponent>
+export type RouteDefinition = Record<string, ComponentType | WrappedComponent> |
+ Map<string | RegExp, ComponentType | WrappedComponent>
/** Generic interface for events from the router */
interface RouterEvent<T> {
|
@laat Nice, I haven't tried it yet, but I think it looks great! Can you maybe create a PR with these changes please? Thx :) |
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
VSCode is complaining when I try to use a wrap function for a route and then specify component/asyncComponent inside wrap - it does not complain when I use it basically like this:
1] scenario:
2] scenario:
(I edited paths for 2nd scenario, so normally it would start with /home/something/...)
My dev dependencies:
I tried searching for this issue but I haven't find any. Also I tried some hacky solutions via typescript "as" keyword, but with no success.
The text was updated successfully, but these errors were encountered: