我是打字稿的新手,基本上是为解决这个简单的问题而挠头。
我有这样声明的对象数组:
[
{
name: 'XSmall',
style: css`
height: 32px;
font-size: 14px;
padding: 0 16px;
`
},
{
name: 'Small',
style: css`
height: 40px;
font-size: 16px;
padding: 0 16px;
`
}
]
然后声明这样的类型
interface StyleProperty {
name?: string
style?:
| FlattenInterpolation<ThemeProps<DefaultTheme>>
| FlattenInterpolation<ThemedCssFunction<DefaultTheme>>
}
type Style<T> = T | {
[key: string] : string | StyleProperty
}
然后在以下代码中使用:
const SIZE = sizes.reduce((size : Style<StyleProperty>, currentSize : Style<StyleProperty>) => {
size[currentSize.name] = currentSize.name
return size;
}, {})
,但由于currentSize.name
被推断为StyleProperty
,因此它不起作用,即使它应该是字符串。
如何解决此问题。我刚接触打字稿,希望有人可以帮忙解释一下。
谢谢。