在Typescript中是否可以这样做:
我有一个对象,它的键是属性,值是这些属性的选项数组:
const options = {
foo: [fooOption1, fooOption2, ...],
bar: [barOption1, barOption2, ...],
...
}
是否有可能创建一个接口,使
interface example {
foo: fooOption1 | fooOption2 | ...,
bar: barOption1 | barOption2 | ...,
...
}
首先,将options对象更改为常量:
const options = {
foo: ['fooOption1', 'fooOption2'],
bar: ['barOption1', 'barOption2']
} as const;
然后,您可以通过将每个数组映射到联合来创建所需的接口:
type OptionsInterface = {
[K in keyof typeof options]: typeof options[K][number]
}
const xx: OptionsInterface = {
foo: 'fooOption1',
bar: 'barOptionError' // Expected error:
// Type '"barOptionError"' is not assignable to type '"barOption1" | "barOption2"'.(2322)
}
:
<- 映射类型/gh>TypeScript:从字符串数组中定义一个联合类型