Microsoft/TypeScript
Ver no GitHubMapping with enum key type and literal value type gives not assignable error.
Open
#48.217 aberto em 11 de mar. de 2022
BugDomain: enumHelp Wanted
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
Bug Report
🔎 Search Terms
map enum key literal value
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about typing for maps.
⏯ Playground Link
Playground link with relevant code
💻 Code
// We can quickly address your report if:
// - The code sample is short. Nearly all TypeScript bugs can be demonstrated in 20-30 lines of code!
// - It doesn't use external libraries. These are often issues with the type definitions rather than TypeScript bugs.
// - The incorrectness of the behavior is readily apparent from reading the sample.
// Reports are slower to investigate if:
// - We have to pare too much extraneous code.
// - We have to clone a large repo and validate that the problem isn't elsewhere.
// - The sample is confusing or doesn't clearly demonstrate what's wrong.
export enum E {
'a-b-c' = 'abc.com',
'def' = 'def.com',
}
export type M = {
[e in E]?: 'literal';
}
const m0: M = {
[E['a-b-c']]: 'literal', // error here
[E.def]: 'literal' // no error
};
export {m0};
🙁 Actual behavior
When use Enum['value'] as the key of a mapping, values assigned to string literal types are not correctly recognized.
The string literal is always lifted as string type and there is an error Type of computed property's value is 'string', which is not assignable to type '"literal"'.
However, if Enum.value form is used as the mapping key, everything works fine.
🙂 Expected behavior
The aforementioned error should not occur.
Type check should be consistent when using Enum['value'] and Enum.value.