Skip to content

Template literals as keys in object literals loosing type information #41912

Closed
@falsyvalues

Description

@falsyvalues

Template literals as keys in object literals loosing type information, even with explicite type literals (works only with one exact type).

TypeScript Version: 4.1.2, 4.2.0-dev.20201210

Search Terms: Template literal types literal keys object keys literal types

Code

const template = <T extends string>(name: T) => ({
    [`${name}` as const]: name
});

Expected behavior:

const value = template ('TEST'); // const value: { TEST: "TEST"; }

Actual behavior:

const value = template ('TEST'); // const value: { [x: string]: "TEST"; }

Playground Link: https://www.typescriptlang.org/play?ts=4.2.0-dev.20201210&ssl=13&ssc=26&pln=13&pc=44#code/MYewdgzgLgBFCmBbADgGwIYIPphFLA7iAE4DWAlmAOZboRanwCeMAvDADwAqM8AHgjAATCDGjFKVAHwAKMOkTwAXDC4BKNlJgyA3gCgYhmAG0ABgBId8xQF9TMOjFCQoAXRXX4em2oDcevWdoGAA3dFQAV3gcPEISCmo2OCQ0TGjcfCIySVp6RiYZAHIuAFEAZS5CvxgAehqncGCwyOUYHRM+FXFJdxgAIlKKvt8YGwCg2AQUDGwMuOzqQnIoAAssVGX4YnCsKCZkeCTuXgF4YVFu6llPFWLyypgAHxhCgHkAJUKnl4A5V8qNKwtLoDEYzJZPHYHKIJr1PN4-ONGrBmlEYpl4jkNghtqgklNUrNYlkEjQCMs1titjs9gcioMASM6g0XKFwlEVO1jJ0xFAJNRegN7sNRkjWQSZtESZIjjx+IIRLz+dI5ApWncKlVNNp9EYTBYrGqoY5YR41Qj-IFkWyWvNSfiUpK7ZJ6fcqkz6hMbRy2qp7iohUMRmMgA

Related Issues: Might be related to #41631

Metadata

Metadata

Assignees

No one assigned

    Labels

    Working as IntendedThe behavior described is the intended behavior; this is not a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions