I wanted to know if this is possible on TypeScript.
I have an interface like this:
interface ComplexTable extends BaseTable {
headers: HeaderOptions[];
datas: { [id: string]: string }[];
}
And HeaderOptions is just an interface with a label and an id
Is there a way to only allow on datas headers ids given before?
For example I have
const table: ComplexTable = {
headers: [
{ id: 'a', label: 'Name' },
{ id: 'b', label: 'Last Name' },
]
}
I wan't to only allow on datas objects with only the keys 'a' and 'b'.
This should work
const table: ComplexTable = {
headers: [
{ id: 'a', label: 'Name' },
{ id: 'b', label: 'Last Name' },
],
datas: someData.map((data) => ({
a: data.someValue,
b: data.someOtherValue
}))
}
This should not work
const table: ComplexTable = {
headers: [
{ id: 'a', label: 'Name' },
{ id: 'b', label: 'Last Name' },
],
datas: someData.map((data) => ({
a: data.someValue,
c: data.someOtherValue
}))
}