-
Notifications
You must be signed in to change notification settings - Fork 319
Open
Description
π Bug report
Current Behavior
import * as t from "io-ts";
const T = t.keyof({
0: undefined,
1: undefined,
2: undefined,
3: undefined,
4: undefined,
});
type T = t.TypeOf<typeof T>; // 0 | 1 | 2 | 3 | 4console.log(T.decode(0));{
"_tag": "Left",
"left": [
{
"value": 0,
"context": [
{
"key": "",
"type": {
"name": "\"0\" | \"1\" | \"2\" | \"3\" | \"4\"",
"keys": {},
"_tag": "KeyofType"
},
"actual": 0
}
]
}
]
}
console.log(T.decode("0"));{
"_tag": "Right",
"right": "0"
}
Expected behavior
import * as t from "io-ts";
const T = t.keyof({
0: undefined,
1: undefined,
2: undefined,
3: undefined,
4: undefined,
});
type T = t.TypeOf<typeof T>; // "0" | "1" | "2" | "3" | "4"Runtime behavior is ok.
It would be nice if there was some way to support the union of literals trick for numeric literals.
Reproducible example
Suggested solution(s)
Additional context
Your environment
Which versions of io-ts are affected by this issue? Did this work in previous versions of io-ts?
| Software | Version(s) |
|---|---|
| io-ts | 2.2.20 |
| fp-ts | 2.13.1 |
| TypeScript | 4.9.3 |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels