Issue
Let's suppose I have a string literal type:
type Letters = "a" | "b" | "c" | "d" | "e";
How can I create the following type based on Letters
?
type LetterFlags = {a: boolean, b: boolean, c: boolean, d: boolean, e: boolean};
I have tried
type Flags<T> = { [k in keyof T]: boolean };
type LetterFlags = Flags<Letters>;
but
const flags: LetterFlags = {a: true, b: false, c: true, d: false, e: true};
raises
Type '{ a: boolean; b: boolean; c: boolean; d: boolean; e: boolean; }' is not assignable to type '"e"'.
Solution
You could do like this:
type Letters = "a" | "b" | "c" | "d" | "e";
type Flags<T extends PropertyKey> = Record<T, boolean>;
type LetterFlags = Flags<Letters>;
const flags: LetterFlags = { a: true, b: false, c: true, d: false, e: true };
Answered By - Guerric P
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.