This is more of a TypeSc…
This is more of a TypeScript questions, hoping someone has some insight, is there a way to determine if a property has a decorator attached to it (in this case @Input
) when declaring a type?
export type NonInputProps<T> = Exclude<T, "@input decorated props">
or the inverse only the @Input props
Not sure if this is possible as I believe decorators are compiled down to metadata on the property once it is compiled using reflect metadata?
Responses:
i dont think with default TypeScript. You could probably extend the language service to do those checks
https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin
*It’s not for the faint of heart
Extending the language service sounds like a lot of work :laughing: But I will look into it! Thanks Jon! I have been wanting to create a generic Type for Angulars SimpleChanges so that you get type checking on the props that actually change (@Inputs). There have been multiple PRs opened about it but none get it completely right, I have tried myself but got stuck on it suggesting props that aren’t inputs but just member variables on the class itself :disappointed:
I don’t think a plugin will work TypeScript Language Service Plugins ("plugins") are for changing the _editing experience_ only. The core TypeScript language remains the same. Plugins can't add new language features such as new syntax or different typechecking behavior...
maybe I will try and contirbute to TypeScript itself then.
Ahh ok