- Banner Maker์ ๋ณด๊ณ ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
- html๋ก๋ง ๋ง๋ html-banner-maker๋ฅผ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด์ ๋ค์ ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
- ์บ๋ฒ์ค ํฌ๊ธฐ ์กฐ์
- ์ค์๊ฐ ์บ๋ฒ์ค ์ ๋ฐ์ดํธ
- ํฐํธ ์ฌ์ด์ฆ ์กฐ์
- ํฐํธ์ ์กฐ์
- ์บ๋ฒ์ค์์ ๋ฐ๋ฅธ ํฐํธ์ ์๋์กฐ์
- ์บ๋ฒ์ค์ ์กฐ์
- ๋๋ค ์บ ๋ฒ์ค์
- ์ด๋ฏธ์ง๋ก ๋ค์ด๋ก๋
- ํด๋ฆฝ๋ณด๋๋ก ์นดํผ
- ์ปฌ๋ฌ ํ์คํ ๋ฆฌ ๊ธฐ๋ฅ
- ์ปฌ๋ฌ ํ์คํ ๋ฆฌ ์ํฌํธ, ์ต์คํฌํธ ๊ธฐ๋ฅ
npx create-react-app . --typescript
yarn add redux react-redux @types/react-redux
yarn add typesafe-actions
- typesafe-actions ์ค์นํด์ ์ก์ ๊ณผ ๋ฆฌ๋์ ํธํ๊ฒ ๋ง๋ค๊ธฐ
export { default } from './reducer';
export * from './actions';
export * from './types';
- ํ์ผ ๋ถ๋ฆฌ๋ฅผํ ๋ ์ ๋ฌธ๋ฒ์์ lint ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
- ๊ธฐ์กด
yarn.lock
ํ์ผ์ ์ญ์ ํ๋ค.
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.23.0",
"@typescript-eslint/parser": "^2.23.0"
},
-
๋ ธ๋๋ชจ๋ ํด๋๋ฅผ ์ญ์ ํ๋ค
-
npm i
๋ก ๋ค์ ๋ ธ๋๋ชจ๋์ ์ค์นํ๋ค. -
๋๋ ts๋ฒ์ ์ด 3.7์ด์๋๋ฐ, ์ด ๊ฒฝ์ฐ eslint๋ฅผ 2.23์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ผ๊ณ ํ๋ค.
- useEffect๋ฅผ ์ฌ์ฉ์ํ๋๊น ์ฒ์ ์น์ ๋ก๋ฉํ์๋ ์บ๋ฒ์ค ์ด๊ธฐํ๋ฅผ ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
const offsets = lines
.map((_line, index) => index)
.reduce((prev, curr) => {
const subtract = curr - mid;
prev.push([subtract < 0, parseInt(subtract.toString(), 10)]);
return prev;
}, new Array<[boolean, number]>());
- prev.push ํ๋ ํ์ ์ ๋ง๊ฒ ๋ฐฐ์ด์ ์ ์ธํด ๋ฃ์ด์ค์ผํ๋ค.
const canvas = canvasRef.current;
const canvas = (canvasRef as any).current;
- ์์ฒ๋ผ ํ๋๊น ์๋ฌ๋๋ฐ, ์๋์ฒ๋ผ ํ๋๊น ๋ฌ๋ค.
reactcss Type '{ position: string; zIndex: string; }' is not assignable to type 'CSSProperties'. Types of property 'position' are incompatible.
popover: {
position: 'absolute',
zIndex: 3 ,
} as CSSProperties,
as CSSProperties
๋ฅผ ๋ถ์ฌ์ฃผ๋๊น ์ ์ ์ฉ๋์๋ค.- ๋ zIndex์ ๊ฐ์ number๋ก ์ค์ผํ๋ค.
"[typescript]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
- ์ ์ฅํ ๋ ์๋์ผ๋ก ํฌ๋งทํ ํ ๋ ค๋ฉด formatOnSave, defaultFormatter๋ฅผ ์ง์ ํด์ค์ผํ๋ค.