typescript & styled-components 세팅
styled.d.ts 파일 작성
// styled-components의 타입정의를 불러와 내가 사용할 신규 타입정의 추가 & 확장
// global style type 작성
import 'styled-components';
declare module 'styled-components' {
// 1. 인터페이스 지정
export interface 인터페이스명지정 {
속성1 : 타입지정;
}
// 2. 타입속성지정
export type 타입명 = {
속성1 : 타입지정;
}
export interface DefaultTheme {
mainBackground: string,
textColor: string
}
}
많이 사용하는 css 변수 등록하는 theme 파일 작성
// 많이 사용하는 글로벌 css를 변수로 작성하는 theme 작성
import { DefaultTheme } from "styled-components";
const theme: DefaultTheme = {
mainBackground: '#fff',
textColor: '#292B2E'
}
export default theme;
스타일 적용
import React from 'react';
import styled, { ThemeProvider } from 'styled-components';
import theme from './styles/theme';
const Container = styled.div`
background-color: ${(props) => props.theme.mainBackground};
color: ${(props) => props.theme.textColor};
`;
function App() {
return (
<ThemeProvider theme={theme}>
<Container>
<h1>테마 적용하기</h1>
</Container>
</ThemeProvider>
);
}
export default App;
스타일 작성하기
1. 단일 props 사용시
// styled-components에 1개 props 타입지정
// const Container = styled.div< {프롭스명 : 타입지정} >`
const Container = styled.div< { age : number } >`
color: ${(props) => (props.age > 20 ? 'red' : 'gray')};
`;
2. 다수 props 사용시: interface 사용
- 인터페이스로 분리하여 타입지정하는것 뿐 이외에 사용법은 동일
// Container styled-components에 적용할 interfacer를 작성
interface Container extends 상속타입 {
isActive: boolean;
age: number;
프롭스명: 타입지정;
}
// styled-components에 interface 타입 지정하기
const Container = styled.div<Container>`
color: ${(props) => (props.age > 20 ? 'red' : 'gray')};
background-color: ${(props) => (props.isActive ? 'red' : 'gray')};
`;
Author And Source
이 문제에 관하여(typescript & styled-components 세팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoonyounghoon/typescript-styled-components-세팅저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)