Microsoft/TypeScript

Improve diagnostic when string from property is not assignable to string literal.

Open

#26,413 opened on Aug 13, 2018

View on GitHub
 (3 comments) (0 reactions) (0 assignees)TypeScript (48,455 stars) (6,726 forks)batch import
Domain: Error MessagesEffort: ModerateHelp WantedSuggestion

Description

TypeScript Version: 3.1.0-dev.20180810

Code

interface IceCreamOptions {
    readonly cherry: "yes" | "no"
}
declare function iceCream(options: IceCreamOptions): void;
const options = { cherry: "yes" };
iceCream(options);

Expected behavior:

Error message recommending to add a type annotation to options. This should be detectable because the source of the failing property is a PropertyAssignment in an object literal being assigned to a variable. (If there is no variable assignment, we could still recommend using ``"yes" as "yes"although that isn't as pretty.) Could also come with a codefix. Note that in JS the fix is slightly different: put/** @type {IceCreamOptions} /before theconstor use/* @type {"yes"} */ ("yes")`.

Actual behavior:

Error messages says Type 'string' is not assignable to type '"yes" | "no"'. with no information on how to fix it.

Contributor guide

Improve diagnostic when string from property is not assignable to string literal. · Microsoft/TypeScript#26413 | Good First Issue