请确认是否需要将以下内容翻译为中文:
考虑以下接口:
interface Theme {
color: {
primary: {
light: string
base: string
dark: string
}
secondary: {
lighter: string
light: string
base: string
dark: string
darker: string
}
}
}
我想编写一个类型,使其可以允许一个元组作为输入,其中第一个元素可以映射到colors
中的任何键,第二个元素可以映射到该键下的任何键(例如:base
)。
例如:
['primary', 'light'] ✅ valid
['secondary', 'darker'] ✅ valid
['primary', 'darker'] invalid
这是我在tsplayground上尝试的,我面临的问题是如果我希望允许多个键作为第一个参数传递,那么第二个参数需要满足第一个参数的所有值。有没有一种方法可以告诉typescript使用作为类型传递的文字值?
type PickThemeColor<C extends keyof Theme['color'] = keyof Theme['color']> = [
C,
keyof Theme['color'][C]
]
// this complains because 'darker' doesnt appear in both 'primary' and 'secondary' keys
const x: PickThemeColor<'primary' | 'secondary'> = ['secondary', 'darker']
= keyof Theme['color']
并且总是在: Typle<>
中设置它。我已经更新了答案。 - satanTime