Есть ли у styled-components интерфейс для функций в литерале шаблона? - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в Typescript, я не могу понять это: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/styled-components/index.d.ts

Я пытаюсь выяснить, существует ли уже определенный тип для функций внутри литерала шаблона в стиле-компоненты.Например:

export const getColor = props => props.color;

const ColorButton = styled.button`
    border: 0;
    color: ${getColor};
`;

export default ColorButton;

Я хотел бы написать файл d.ts для этих двух экспортов.В настоящее время я придерживаюсь этого шаблона:

type PropFunction<T> = (props: T) => string;
type Prop<T> = string | PropFunction<T>;

interface ColorButtonProps extends React.ButtonHTMLAttributes<HTMLButtonComponent> {
    color?: string;
    css?: Prop<ColorButtonProps>;
}

declare const getColor: Prop<ColorButtonProps>;
declare const ColorButton: React.ComponentType<ColorButtonProps>;

export default ColorButton;

Причина этого заключается в том, что я могу писать функции styled-component как реквизиты:

<ColorButton color="purple" css={getColor} />

Поскольку getColor является типомФункция, которую ожидают styled-components в шаблонном литерале, я бы предположил, что для нее уже определен тип, и мне не нужно создавать свой собственный (PropFunction и Prop).Есть ли лучший способ определить эти типы?

...