【发布时间】:2022-01-10 05:39:51
【问题描述】:
我有一个组件,它有一堆独特的样式,具体取决于变体道具:
interface CommonStyleProps {
filled_icon: boolean;
}
const primaryStyles = css<CommonStyleProps>`...`
const ghostStyles = css<CommonStyleProps>`...`
const calculateColors = (
variant: BUTTON_VARIANTS
) => {
switch (variant) {
case BUTTON_VARIANTS.GHOST:
return ghostStyles;
case BUTTON_VARIANTS.PRIMARY:
default:
return primaryStyles;
}
};
interface ContainerProps {
variant: BUTTON_VARIANTS;
}
const Container = styled.button<ContainerProps>`
${({ variant }) => calculateColors(variant)}. // <---------- Typescript complains here
`;
但是,Typescript 抱怨 calculateColors 的返回类型错误。
当我将返回类型更新为此时,它可以工作:
import styled, {
css,
keyframes,
FlattenInterpolation,
ThemedStyledProps,
} from 'styled-components';
...
const calculateColors = (
variant: BUTTON_VARIANTS
): FlattenInterpolation<ThemedStyledProps<any, any>> => {
...
};
有没有更好的方法来定义css 的返回类型而不使用any?
【问题讨论】:
标签: typescript styled-components