使用可选键声明类型时,Typescript错误推断

时间:2019-12-03 13:47:57

标签: typescript

我是打字稿的新手,基本上是为解决这个简单的问题而挠头。

我有这样声明的对象数组:

[
    {
        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,因此它不起作用,即使它应该是字符串。

如何解决此问题。我刚接触打字稿,希望有人可以帮忙解释一下。

谢谢。

0 个答案:

没有答案