sveltejs / svelte

web development for the rest of us
https://svelte.dev
MIT License
80.12k stars 4.26k forks source link

isSnippet() function #14017

Open webJose opened 3 weeks ago

webJose commented 3 weeks ago

Describe the problem

We use a class that accepts (or tries to, at least) 3 types of content in its content property:

The class used to work fine with custom isSnippet and isParcel functions. The former one was working by checking the content was an object that had a render function. This seems to have changed now. It seems that snippets are now (also?) functions.

Describe the proposed solution

Instead of us, mere mortals, having to guess what constitutes a snippet, it would be nice if Svelte provided us with an isSnippet() function that would always be accurate. Taking out the guesswork is the main concern here.

Importance

would make my life easier

brunnerh commented 3 weeks ago

Related:

webJose commented 3 weeks ago

That would be an interesting approach, but unsure how it would play in the TypeScript world. The idea of this function is probably simpler to achieve. I just need the following from Svelte:

export function isSnippet(obj: unknown): obj is Snippet { ... }

A simple Boolean function that narrows types in TS. The idea of a single syntax for components and snippets is cool, though. I suppose it is also harder to achieve, TS-wise.