-
Notifications
You must be signed in to change notification settings - Fork 341
Description
I am attempting to use a computed value in the setup() block of a component, such as follows:
const store = useStore();
const computedItem = computed({
get(): string | null {
return store.getters["getterHere"]; // string, sometimes null
},
set(newValue: string): void {
store.commit("setterHere", newValue);
},
});The getter normally returns a string, but as it also can sometimes be null. I therefore annotated the getter's return as string | null. (The value in the store is initialized elsewhere, hence the possibility of the null value.)
However, I'm getting a Vetur error 2769 on the get() due to the return value of null not being assignable to string.
I believe this error occurs due code in the following files:
- https://github.com/vuejs/composition-api/blob/b7c7211e560f5966a563dc393ca6f30321a6416b/src/component/componentOptions.ts
- https://github.com/vuejs/composition-api/blob/7955e2879754a26db57ca7ef7da35d3098c84480/src/apis/computed.ts
In this code, the type that is used for the argument for ComputedSetter is reused as the return type of the ComputedGetter. So in this case, the TypeScript error occurs because it is attempting to coerce the return type of the get function to string instead of string | null.
Might it be possible to allow the getter function's return type to be a superset containing the type passed into the setter?