We have:
type test = {
id: number;
name: string;
};
const arr: test[] = [{ id: 1, name: 'test-1' }, { id: 2, name: 'test-2' }];
And I want to create a type from an array of objects:
type other = typeof arr[number]['name'];
const another: other = 'test-1'; // Should be 'test-1' | 'test-2' but it's string
If I remove the custom type of arr
and use const assertion:
const arr = [{ id: 1, name: 'test-1' }, { id: 2, name: 'test-2' }] as const;
type other = typeof arr[number]['name'];
const another: other = 'test-2'; // Works!
It'll work, but I want to have a type for my arr
too.
How can I create something like this:
type test = {
id: number;
name: string;
};
const arr: test[] = [
{ id: 1, name: 'test-1' },
{ id: 2, name: 'test-2' }
] as const;
type other = typeof arr[number]['name'];
const another: other = 'test-1';
I tried to use ReadonlyArray<test>
but no luck!