infernojs / inferno

:fire: An extremely fast, React-like JavaScript library for building modern user interfaces
https://infernojs.org
MIT License
16.09k stars 633 forks source link

Add implementation type aliases to make types safe application development easier #1619

Open jhsware opened 1 year ago

jhsware commented 1 year ago

We have a very, very rich set of types in Inferno and many types have similar names. This can make it hard to pick an appropriate type in application code.

It would be great if we could create a limited set of type aliases with intuitive names that can be used by application developers.

Use case:

What is the correct type for the the component? Is it:

So a type alias could be:

// Require a Function or Class Component where P is a required set of properties
export type InfernoComponent<P = any> = Component<P> | Inferno.StatelessComponent<P>;

This would save time, encourage type safety and make application code more readable.

Havunen commented 1 year ago

Yes this is very legit issue.

This issue origins roots to the fact that Inferno JSX typings are based on React Jsx.

In my opinion it would be awesome if we could provide InfernoJs native typings for JSX too and make all these extra types unnecessary.

I haven't found any easy way to implement that and that is why there are so many types / interfaces for similar things

Havunen commented 1 year ago

There is nowdays JSX documentation in typescript compiler site: https://www.typescriptlang.org/docs/handbook/jsx.html