Say I have an array of strings:
const s = ['foo', 'rolo', 'zoombaz'];
and so I would get:
type v = {
foo: string,
rolo: string,
zoombaz: string
}
bonus: Ideally I am looking to map them to camel-case, so if I had:
const s = ['foo', 'rolo', 'zoom-baz'];
I would get:
type v = {
foo: string,
rolo: string,
zoomBaz: string
}
in some cases, I would want to tell it to use boolean instead of string. This is for a command line parser.
First you'll need to get TypeScript to infer the element type of the array as a union of string literal types instead of widening to
string
. The standard trick supported by the compiler to do this is to run the array through an identity function that infers an element type constrained bystring
:Now you can define:
TypeScript won't do any string manipulation such as camel-casing in the type system. However, you could initially define the names in the casing you want for types and then convert to whatever other casing at runtime.