-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Closed
Labels
Working as IntendedThe behavior described is the intended behavior; this is not a bugThe behavior described is the intended behavior; this is not a bug
Description
TypeScript Version: 2.3.2
Code
type Action = { type: 'activate' } | { type: 'disactivate' };
function dispatchAction(action: Action): void {
}
const active = true;
dispatchAction({ type : (active? 'disactivate' : 'activate') });
Expected behavior:
Everything is correct. And if I change last line to:
dispatchAction(active? { type : 'disactivate' } : { type : 'activate' });
then no errors will be produced.
Actual behavior:
Error:
Argument of type '{ type: "activate" | "disactivate"; }' is not assignable to parameter of type 'Action'.
Type '{ type: "activate" | "disactivate"; }' is not assignable to type '{ type: "disactivate"; }'.
Types of property 'type' are incompatible.
Type '"activate" | "disactivate"' is not assignable to type '"disactivate"'.
Type '"activate"' is not assignable to type '"disactivate"'.
Metadata
Metadata
Assignees
Labels
Working as IntendedThe behavior described is the intended behavior; this is not a bugThe behavior described is the intended behavior; this is not a bug