-
Notifications
You must be signed in to change notification settings - Fork 13
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
[context] createContext
function recommendation
#60
Comments
No, that PR only fixed inconsistencies and keeps the same Though I don't have a clear idea on what the change I'd like to see here. It's not detrimental as is since everything is functional, but it just feels less polished with hardcoded unknown types for the context key. But then Lit's implementation which does preserve the type of context key has its own downside of having to explicitly pass in 2 types to |
Another option here is to drop the key type parameter. If keys are mostly used opaquely, then the value type is much more important. It's the type that producers and consumers need to use. Yet another option is to wait for microsoft/TypeScript#26242 😄 |
The current recommendation for
createContext
hascommunity-protocols/proposals/context.md
Lines 114 to 121 in 952f158
This effectively makes
typeof key
to always beunknown
.Lit's implementation has
which allows taking an type argument for the context key. In order to take advantage of this though, both type arguments must be provided. If only
ValueType
is provided,K
defaults tounknown
as TypeScript does not do partial inference of type arguments.Now in practice, I don't think having an explicit
KeyType
be provided toContext
is quite necessary. The extraction of theValueType
does not require it:community-protocols/proposals/context.md
Lines 101 to 104 in 952f158
I'm a bit torn as it feels correct to allow explicitly typing the
KeyType
as in the Lit implementation, but if it's functionally moot, that creates confusion like lit/lit#4601One issue with having
KeyType
beunknown
is that it can look confusing. Withunknown & {__context: ValueType}
, it just looks like{__context: ValueType}
in type intellisense.e.g.
The text was updated successfully, but these errors were encountered: