๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ฉด ๋์ pull ์์ฒญ์ ํ์ธ์.
[x] @types/styled-components
ํจํค์ง๋ฅผ ์ฌ์ฉํด ๋ณด์๋๋ฐ v.4.1.9 ์ดํ๋ก ๋ค๋ฅธ ์ถฉ๋ ์ข
์์ฑ ์ด ์ถ๊ฐ๋๊ณ (@types/react-native) @types/node ์ ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ปค๋ฐ ์ฐธ์กฐ
[x] tsc์ ์ต์ ์์ ๋ฒ์ (3.3.3333)์ ์ฌ์ฉํด ๋ณด์์ต๋๋ค. https://www.npmjs.com/package/typescript
[x] [๋ฉ์
](https://github.com/blog/821-mention-somebody-they-re-notified) ์์ฑ์( Definitions by:
in index.d.ts
) ๋๋ตํ๋ค.
๋ช
๋ น์ผ๋ก ๋ฐ์ ์ฑ ์๋ก ์ค์น
yarn create react-app my-app-ts --scripts-version=react-scripts-ts
yarn add styled-components
yarn add -D @types/styled-components
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import {ThemeProvider} from "styled-components";
import App from './App';
import './index.css';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(
<ThemeProvider theme={{}}>
<App />
</ThemeProvider>,
document.getElementById('root') as HTMLElement
);
registerServiceWorker();
yarn start
lib.dom๊ณผ ์ถฉ๋ํ๋ ๋ง์ ์ ์์ ๋ฐ๋ฅด๋ฉด ๋ง์ ์คํจ๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง
@types/react-native๊ฐ ์ถ๊ฐ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ฐ์ ์น ํ๋ก์ ํธ๊ฐ ์๋๋ฐ ์ฌ์ฉํ์ง ์๋ ํ์ดํ์ ์ค์นํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ค์ ์ปดํ์ผ๋ฌOptions.types์ ์ํด ์๋์ผ๋ก ์์ ๋จ
{
"compilerOptions": {
...
"types": ["react", "jest"]
}
...
}
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค.
๋ด ํ๋ก์ ํธ์ ์ฌ๋ฌ ์ ํ ์ ์๊ฐ ์์ผ๋ฏ๋ก @types/styled-components
์ข
์์ฑ์ ์ด์ ๋ฒ์ ์ผ๋ก ์์ ํ์ต๋๋ค.
tsconfig.json
๋ช
์์ ์ผ๋ก ์ ํ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ข์ง ์์ ํด๊ฒฐ์ฑ
์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์น์ฉ๊ณผ ๋ค์ดํฐ๋ธ์ฉ styled-components
์ ์ ํ์ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด FormData์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ๋ typescript: 3.3.333
์์ต๋๋ค. ์ฌ๊ธฐ์๋ package.json
๋ฐ tsconfig.json
ํจํค์ง JSON
"dependencies": {
"@material-ui/core": "^3.9.2",
"@types/react-loadable": "^5.5.0",
"@types/react-router-dom": "^4.3.1",
"prettier": "^1.16.4",
"react": "^16.8.4",
"react-dom": "^16.8.4",
"react-loadable": "^5.5.0",
"react-router-dom": "^5.0.0",
"react-scripts-ts": "3.1.0",
"styled-components": "^4.1.3"
},
"devDependencies": {
"@types/jest": "^24.0.11",
"@types/node": "^11.11.3",
"@types/react": "^16.8.8",
"@types/react-dom": "^16.8.2",
"@types/styled-components": "^4.1.12",
"eslint": "5.3.0",
"eslint-config-airbnb-base": "13.1.0",
"eslint-plugin-import": "^2.14.0",
"typescript": "^3.3.3333"
}
TSCONFIG JSON
{
"compilerOptions": {
"baseUrl": ".",
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"importHelpers": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"esModuleInterop": true,
"types": ["styled-components", "react", "react-dom", "jest"]
},
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
]
}
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์๊ณ ์์ด. ๋คํํ, ๋๋ ๋ฒ์ ์ ๊ธํ์ฌ ๋ฌธ์ ๋ฅผ ๊ทน๋ณต ํ ์ ์์๋ค @types/styled-components
์ 4.1.8
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ๊ฑฐ๋ node_modules์์ react-native๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ค์น ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก dom libs์ ์ข
์์ฑ์ด ์ถฉ๋ํ๋ ๊ฒฝ์ฐ ์น์์ styled-components๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?!
์ด๊ฑด ๋ฏธ์ณค์ด!
๋์ผํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ์์ฑ์์๊ฒ ์๋ฆผ์ด ์ ์ก๋์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค: @eps1lon @flavordaaave
@ArthurBito ๋๋ถ์ ์ ์ ๋ชฉ๋ก์ด ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๋์๊ฒ๋ ๋ฐ์ํฉ๋๋ค. @types/react-native๋ ์น ํ๋ก์ ํธ์ ์ข ์์ฑ์ด ๋์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ๋ถ๋ฆฌ๋์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ๋งํ ์์๋ ํ ์ด๊ฒ์ 4.1.9๋ก ์ถ์ ๋ #32843์ ์ํด ๋ฐ์ํ์ต๋๋ค. ์ด ๋๊ธ์ด ์ด๋ฅผ ๋ท๋ฐ์นจํฉ๋๋ค.
ํด๋น ์ค๋ ๋ ์ ์ด ๋ฌธ์ ๋ฅผ ์ธ๊ธ ํ์ต๋๋ค .
/cc @minestarks
๋ฒ์ ์ 4.1.8๋ก ์์ ํ๋ฉด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ PR์ด ์์ต๋๊น? ์ด์ํ๊ฒ๋ ์น ํ๋ก์ ํธ์์ styled-components๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ค์ ๋ก @types/styled-component
์
๋๋ค.
my-app git:(master) โ npm ls @types/react-native
[email protected] /Users/devniel/dev/electron/my-app
โโโฌ @types/[email protected]
โโโ @types/[email protected]
๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋ค์ ๋ด์ฉ์ผ๋ก .yarnclean
ํ์ผ์ ๋ง๋ญ๋๋ค.
@types/react-native
๋ฌธ์ ํด๊ฒฐ ๐
๋ฐ๋ ์ด ์ง๋ ์ง๊ธ๋ ์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ ๋ง ์ ๋ฐ์ดํธ๊ฐ ์๋์???
๋ด ์๊ฐ์ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ
์ @types/react-native๋ฅผ ํผ์ด ์ข
์์ฑ์ผ๋ก ๋ง๋๋ ๊ฒ์ด์ง๋ง ๋ด๊ฐ ์๋ ํ types-publisher
๋ ํ์ฌ ์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ด๋ฆฌ์ ์ค ํ ๋ช
์ด ์ ๊ฐ ์ฌ์ค์ด๊ณ peerDep์ด ํด๊ฒฐ์ฑ
์ธ์ง ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น? ์ฐ๋ฆฌ๊ฐ ๊ฐ ์ ์๋ค๋ฉด ์ฃผ๋ง์ types-publisher์ peerDep ์ง์์ ์ถ๊ฐํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค.
๋ด ์๊ฐ์ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ @types/react-native๋ฅผ ํผ์ด ์ข ์์ฑ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค.
ํ , @types/react-native
๊ฐ peer dep์ด๋ฉด React Native๊ฐ ์๋ ํ๋ก์ ํธ์์ @types/styled-components
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ข
์์ฑ์ผ๋ก ์ ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ์ด์์ ์ด์ง ์์ต๋๋ค.
์ด์์ ์ผ๋ก @types/react-native
๋ React Native๊ฐ ์๋ ํ๋ก์ ํธ์ ํ์ํ์ง ์์ต๋๋ค. ํนํ ์ข
์์ฑ์ผ๋ก _์ ์ธ_ํ ํ์๊ฐ ์์ต๋๋ค.
optionalDependency๋ก ๋ง๋์๊ฒ ์ต๋๊น?
@paulmelnikow , ๋ค, ๋ง์ต๋๋ค. ๋ ๊ฐ์ง๋ฅผ ํผ๋ํ์ต๋๋ค. @types/styled-components
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด @types/react-native
๋ฅผ ์ข
์์ฑ์ผ๋ก ์ ์ธํ ํ์๋ ์์ง๋ง ์ฑ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ฒ ๋๋ฏ๋ก ๋ฌผ๋ก optionalDeps ๊ฐ ๋ ๋์ ์๋ฃจ์
์
๋๋ค. types-publisher
๋ ์ง์ํ์ง ์๋๋ฐ ํ๋ฒ ํด๋ด์ผ๊ฒ ๋ค์
"@types/styled-components": "4.0.0"์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์๋์, ํด๊ฒฐ๋์ง ์์ต๋๋ค. ์นดํซ ์๋์ ๋ฌธ์ ๋ฅผ ์ธ์ด๋ด๋ฆฝ๋๋ค.
์๋์, ํด๊ฒฐ๋์ง ์์ต๋๋ค. ์นดํซ ์๋์ ๋ฌธ์ ๋ฅผ ์ธ์ด๋ด๋ฆฝ๋๋ค.
๋ค์ ์ปดํ์ผ ํด๋ณผ๊น์? ;-)
๋ค์ ๋ด์ฉ์ผ๋ก
.yarnclean
ํ์ผ์ ๋ง๋ญ๋๋ค.@types/react-native
๋ฌธ์ ํด๊ฒฐ ๐
npm๊ณผ ๋๋ฑํ ๊ฒ์ด ์์ต๋๊น?
์ด ๋ฌธ์ ์ ์ง์ ์ด ์์ต๋๊น?
styled-components๋ฅผ typescript์ ํจ๊ป ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
์ด repo์ ์ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด @types/react-native
๊ฐ React Native ํตํฉ์ ์ํ ์ค์ .d.ts
๋ฐ ํ
์คํธ ํ์ผ์์๋ง ํ์ํ๋ค๋ ๊ฒ์ ๋ถ๋ช
ํ ์ ์ ์์ต๋๋ค. styled-components
์ค์ ๋ก ์๋ํ๋ ๋ฐฉ์๊ณผ ์ผ์นํ์ฌ React Native์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ์์ฒด ํ์ ๋ชจ๋/์ ํ ์ฌํญ/ํผ์ด ์ข
์์ฑ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ด ๋ ์ ์ ํ ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. import styled-components/native
React Native ํญ๋ชฉ์ ์ํ๋ ๊ฒฝ์ฐ. styled-components
๊ฐ์ ธ์ค์ง ์๊ณ ๋ฐํ์์ React Native ํญ๋ชฉ์ ์ ์ฒด ์ ๊ธ๋ ๊ฐ์ ธ์ค๋ฏ๋ก styled-components
๋ง ๊ฐ์ ธ์ด์ผ๋ก์จ @types/react-native
์ ์ ์ฒด ์ ๊ธ๋ ์ป์ง ์์์ผ ํฉ๋๋ค
๊ทธ๋์ ๋ฐ์ ๋ค์ดํฐ๋ธ ํตํฉ์ ์ด ํจํค์ง์ NPM ๊ฒ์ ๋ฒ์ ์์ ์ญ์ ๋๊ณ ์์ฒด ํจํค์ง๋ก ๊ฒ์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ๋ก์๋ ์ด๊ฒ์ ์ฐฝํผํ๊ฒ ๊นจ์ ธ TypeScript๋ฅผ ์ ์ฒด์ ์ผ๋ก ๋์๊ฒ ๋ง๋ญ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ์ต๋ํ ๋นจ๋ฆฌ ๋ค์ดํฐ๋ธ ์ ํ์ ์ ๊ฑฐํ์ญ์์ค. ์ด๊ฒ์ ๋ค๋ฅธ ํ๋ฅญํ ํ์ดํ ํ๋ก์ ํธ๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
์ด repo์ ์ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด
@types/react-native
๊ฐ React Native ํตํฉ์ ์ํ ์ค์ .d.ts
๋ฐ ํ ์คํธ ํ์ผ์์๋ง ํ์ํ๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ์ ์ ์์ต๋๋ค.styled-components
์ค์ ๋ก ์๋ํ๋ ๋ฐฉ์๊ณผ ์ผ์นํ์ฌ React Native์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ์์ฒด ํ์ ๋ชจ๋/์ ํ ์ฌํญ/ํผ์ด ์ข ์์ฑ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ด ๋ ์ ์ ํ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. importstyled-components/native
React Native ํญ๋ชฉ์ ์ํ๋ ๊ฒฝ์ฐ.styled-components
๊ฐ์ ธ์ค์ง ์๊ณ ๋ฐํ์์ React Native ํญ๋ชฉ์ ์ ์ฒด ์ ๊ธ๋ ๊ฐ์ ธ์ค๋ฏ๋กstyled-components
๋ง ๊ฐ์ ธ์ด์ผ๋ก์จ@types/react-native
์ ์ ์ฒด ์ ๊ธ๋ ์ป์ง ์์์ผ ํฉ๋๋ค
๐
๊ทธ๋์ ๋ฐ์ ๋ค์ดํฐ๋ธ ํตํฉ์ ์ด ํจํค์ง์ NPM ๊ฒ์ ๋ฒ์ ์์ ์ญ์ ๋๊ณ ์์ฒด ํจํค์ง๋ก ๊ฒ์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ํด๊ฒฐ์ฑ ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๊ณ #32843์ ์ถ์ง๊ณผ ๊ฐ์ด ๋์ผํ ํจํค์ง๋ก ๋ ๋ค ๋ฐฐ์กํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์๋ฃจ์ ์ผ๋ก PR์ ์์ํ๊ฑฐ๋ ์์ ํ ์ ์๋ Styled Components์ ํน๋ณํ ํฌ์ํ ์ฌ๋์ ์ฐพ๋ ๊ฒ์ ๋๋ค.
ํ์คํTyped๋ ํจํค์ง ์ปค๋ฎค๋ํฐ์ ๋ฉ์ง ์๋น์ค๋ฅผ ์ ๊ณตํ๋ฉฐ ์ฌ๊ธฐ์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ์์ต๋๋ค. ๋น๋ก ๊ทธ๋ค์ ์์ ์ด ๋ชจ๋ ์ ํ์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋์ง๋ง. ์ด ํ๋ก์ ํธ(๋๋ TypeScript)์์ ์ฃผ๋จน์ ํ๋๋ฅด๋ ๊ฒ์ ๋์์ด ๋์ง ์์ต๋๋ค.
๋ ๊ฐ์ ์ผ๋ก ์ ํํ๊ณ ์์ด
์ฌ๊ธฐ์๋ ๊ณ ์ ํ ์ ํ ์คํฌ๋ฆฝํธ ์ ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ์์ ํ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ง์ด๊ทธ๋ ์ด์
์ ๋ชจ๋ ์ฝ๊ฒ ์ฐพ๊ณ ๊ต์ฒดํ ์ ์์ต๋๋ค.
๊ฒ๋ค๊ฐ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์กฐ๊ธ ๋ ์์ต๋๋ค.
#32843์ ๋์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์ฌ์ฉ์์ 90% ์ด์์ด ํ์ดํ์ ๊นจ๊ณ ์ด ์ค๋ ๋์์ ์ธ๊ธ๋ ์ค๋๋ ๋ฒ์ ์ด๋ ์ผ๋ถ ํดํน์ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
#32843์ ๋์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์ฌ์ฉ์์ 90% ์ด์์ด ํ์ดํ์ ๊นจ๊ณ ์ด ์ค๋ ๋์์ ์ธ๊ธ๋ ์ค๋๋ ๋ฒ์ ์ด๋ ์ผ๋ถ ํดํน์ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ค์์ ์ฌ์ฉ์๊ฐ ํ์ดํ์ ๋ ์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์๋ฃจ์ ์ด ๋ ์ ์์ต๋๋ค. PR์ด ์น์ธ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ต์ ์ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ถ๋ด์์ด PR์ ํด์ฃผ์ธ์.
์ด ๋๋๋ฆฌ๊ธฐ๊ฐ ์๋ฃ๋๋ฉด ๋์ค์ ๋ฐ์ ๋ค์ดํฐ๋ธ์ ํจ๊ป ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ๋ฉ๋ชจ๋ฅผ ํจํค์ง์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์๋ํ์ง ์์์ง๋ง ๋ฐ์ ๋ค์ดํฐ๋ธ ์ฌ์ฉ์๊ฐ declare module
์ ์ธ์ ์ฌ์ฉํ์ฌ ์ ๊ฑฐ๋ ํ์ดํ์ ๋ณต์ฌํ์ฌ ํ๋ก์ ํธ์ ๋ถ์ฌ๋ฃ๊ณ ์์
์ ๊ณ์ํ ์ ์์ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ๋ฐ์ ๋ค์ดํฐ๋ธ ์ฌ์ฉ์๊ฐ ์ด ์์
์ ์ํํ๋๋ก ํ๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์
๋๋ค.
ํ์ง๋ง TypeScript ํ์์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ณต์์ ์ธ ์ง์นจ์ ์ ๊ณตํ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ชจ๋ ์๋ฃจ์ ์์ "์์ด๋ฒ๋ฆฐ" ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
IMO, ์ด๊ฒ์ ๋๋๋ ค์ผ ํฉ๋๋ค - ์ฃผ๋ก ์น ์คํ์ผ ๊ตฌ์ฑ ์์ ์ํ๊ณ๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ ์ด์ ์๋ ๋ฐฉ์์ ๋ํ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ์์ง ๋ชปํ์ง๋ง React Native์ ๊ฒฝ์ฐ ๋์๊ฒ ์ข์ ์ ์ถฉ์์ฒ๋ผ ๋ณด์ด๋ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ ํ ์ธํธ๋ฅผ ์ป์ ์ ์์์ต๋๋ค. ํ , ์ด๊ฒ์ด ๊ฐ์ ธ์จ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ผ๋ก ๋ค์.
๋ฐ์ ๋ค์ดํฐ๋ธ ํน์ ์ ํ์ ์ถ๊ฐํ๋ ํธ๋ฆฌํ ์ฌ๋์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํตํด ์ฌ๋๋ค์ด ๊ฐ์ ธ์ค๋ ์ฐ๋น์ธํธ ๋ชจ๋์ ๊ฐ์ง ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์ฌ๊ธฐ์ +1, ํ์ง๋ง ๋ถํ๋ง ํ๋ ๊ฒ์ด ์๋๋ผ, ํ๋ ๊ณํ์ด ์๋ค๋ฉด ์ฐธ์ฌํ๊ณ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ฃผ๊ณ ์ถ์ต๋๋ค.
๋๋ ์ฌ๊ธฐ์ ์์ ์ผ๋ถ ์๊ฒฌ์ ๋ด ํ๋ฌ์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ด๊ฐ ์ด๋ฏธ ๊ทธ๋ ๊ฒ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค... ์ด ๋ฌธ์ ๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ํ์ ๋.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ์์๊ฒ ๊ทธ๋ค์ ์ ํ์ ์ ์งํ๋๋ก ๊ฐ์ฒญํ ์ด์ ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํด๋น ์ ํ๊ณผ ํจ๊ป ์ธ๋ผ์ธ์ผ๋ก ์ ๋ฐ์ดํธ๋๋๋ก ํฉ๋๋ค. def typed๊ฐ ์ปค๋ฎค๋ํฐ์ ์ฌ๋ฌ ๋ฉด์์ ๋์์ด ๋์๋ค๋ ์ ์ด ๋ง์์ ๋ค์ง๋ง lib ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ง์ ์ ๋ ฅํ๊ฑฐ๋ ts๋ก ๋ค์ ์์ฑํ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ผ๋ฉด ๋ ์์ ํ ์ธ์์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ํ ๋ก์ปฌ ํด๋ก ์ ํตํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ์ ๋ํด ๋์ ํ๊ณ ์นจ์ฐฉํ์ต๋๋ค. ํ์ง๋ง ์ ์ธ๊ณ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ (6๊ฐ์ ์ด์)๋ก ์ถฉ๋ถํ ๊ณ ํต์ ๊ฒช์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ์ค์ํ๊ณ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๊ธฐ์ ์ ์ ํตํ์ง ์์ ํ์ดํ์คํฌ๋ฆฝํธ ์ฌ์ฉ์๊ฐ ๋ค์ ์์ํ ์ ์๋๋ก ํ๊ณ ์ถ์ต๋๋ค.
์น์ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ PR์ด ์์ต๋๊น? ์ ํจํ์ง ์์ react-native
์ ์ญ ์ข
์์ฑ์ ์ ๊ฑฐํ๋ ํ ์ค์ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฃ์ด์ผ ํฉ๋๊น(๋ด ๊ฐ์ธ npm ์ ์ฅ์ ๋ด์์ ํ๋ ๊ฒ์ฒ๋ผ)?
๋ํ react-native
๋ฅผ ์ค์นํด์ผ ํ๊ณ ๊ธ๋ก๋ฒ ๋ค์์คํ์ด์ค์ ์ถฉ๋ํ๋ ์ด์ ๊ฐ ์๋์? ์ฐจ์ํ๊ณ ์๊ฐ์ ๊ณต์ ํ์ญ์์ค. (ํ์ง๋ง ๋ณธ์ ์๋๊ฒ ์ฐ๋ฆฌ ์์
์ ๋ฐฉํดํ ์ฌ๋๋ค์ด ์ด ํธ๋ฅผ ์ฝ์์์ง ๊ถ๊ธํฉ๋๋ค. ์ฐ๋ฆฌ ํผํด์ ๋ํด ์ ํ ๋ชจ๋ฅด๊ณ ์์ด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๊ธฐ๋ปํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ด๊ฐ ๊ทธ๋ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ํธ์ ์์๋ค๊ณ ๋งํ ์๋ ์์ต๋๋ค. ์ ์.)
๋ํ ๋ค๋ฅธ ํจํค์ง๋ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น? ๋๋ ์ด ๋ฌธ์ ๋ฅผ ๋๋๋ฆฌ๋ _"๋จ์ํ"_ PR์ ๋ง๋๋ ๊ฒ์ ์ฃผ์ ํ๋ ๊ฒ์ ๋ํ ๋จ์๊ฐ ์์ต๋๋ค.
์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ ค์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ด ์์
์ ์ํํ๊ธฐ ์ํด skipLibCheck
๋ฅผ ํ์ฑํํ ํ์๊ฐ ์์์ต๋๋ค. https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33311#issuecomment -466731156 . ํ์ง ๋ง์ธ์.
์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ๊ฒ์ ์ข์ ์ ํ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด react-native์ ๋ํ ํ์ดํ์ด ํ์ํ๊ณ ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ์์ ํ๊ณ ๋ชจ๋ react-native ํ์ดํ์ ์ ๊ฑฐํ์ง ์์์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ ํด๊ฒฐ์ฑ ์ด ์๋ค๋ฉด? ์ฐ๋ฆฌ๋ ์ ์ด๋ ํ๋์ ๋ฆด๋ฆฌ์ค๋ฅผ ๋น๋ค์ดํฐ๋ธ ์ฌ์ฉ์๋ฅผ ์ํด ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ํ์ฌ ์์ ํ ๋ง๊ฐ์ก๊ณ ํ๋์ ๊ทธ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๋น๋ค์ดํฐ๋ธ ์ฌ์ฉ์๋ ๋๋ค์์ผ ๊ฒ์ด๋ผ๊ณ ๊ฐํ ์ถ์ธกํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
react-native
์
๋ ฅํด์ผ ํ๋ @dawick ์ฌ๋๋ค์ ์๋์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค.
์ ๊ทธ๋ค์ด ํ์ํฉ๋๊น?
์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ๊ฒ์ ์ข์ ์ ํ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด react-native์ ๋ํ ํ์ดํ์ด ํ์ํ๊ณ ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ์์ ํ๊ณ ๋ชจ๋ react-native ํ์ดํ์ ์ ๊ฑฐํ์ง ์์์ผ ํฉ๋๋ค.
react-native
๋ํ ํ์ดํ์ด ํ์ํ ์ฌ๋๋ค์ @types/react-native
๋ฅผ ์ค์นํ์ฌ ์ป์ด์ผ ํฉ๋๋ค.
๋๋ ์ฌ์ ํ react-native
์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ @types/styled-components
์์ ์ญ์ ํ๊ณ ์ฌ๋๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ์ผ์นํ๋๋ก @types/styled-components/native
์ ๊ฐ์ ๋ค๋ฅธ ํจํค์ง/๊ฒฝ๋ก๋ก ์ฎ๊ฒจ์ผ ํ๋ค๋ ์
์ฅ์ ๊ฐํ๊ฒ ์ ์งํฉ๋๋ค. styled-components
; ์ํ๋ ์ฌ๋๋ค์ react-native
์ง์์ด ๋ช
์ ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์ป์ import styled from 'styled-components/native'
, ๋น์ ์ ๋ชจ๋์ ์ ์ฒด ์ป์ง ์๋๋ค react-native
์ํํ์ฌ ์ ๊ธ์ import styled from 'styled-components'
์น์์ ํ๋ก์ ํธ์ด๋ฏ๋ก ์ฐ๊ฒฐ๋ @types/
ํจํค์ง๋ ๋ค๋ฅด๊ฒ ์๋ํ์ง ์์์ผ ํฉ๋๋ค.
๋๋ ์ฃผ๋ง์ ๋ ์ฒด๊ณ์ ์ธ ๋ฐฉ์์ผ๋ก ์ด๊ฒ์ ์์ ํ๊ธฐ ์ํด ์ฐ๋ ์ต๋๋ค. ์น + ๋ค์ดํฐ๋ธ ๋ฐ์ ๋ชจ๋์ ๋ํ ์ ํ์ ๋ํํ๋ ๋ชจ๋ ์ ์ฅ์์์ ์๋ํ ์ ์์ต๋๋ค. https://github.com/microsoft/types-publisher/pull/655
์ด๊ฒ ์ด๋ป๊ฒ ํด๊ฒฐ๋์ง ์์๋์ง...
์ง์งํ๊ฒ? ์์ง๋ ์์ ์ด ์๋๋์?
@givethemheller @sanex3339 https://github.com/microsoft/types-publisher/pull/655 ์์ ์์ ๋ฐ ํ ๋ก ์ ์์ ์ฌํญ์ด
์์ ํด๊ฒฐ์ฑ
์ผ๋ก node_modules์์ @types/react-native
๋ฅผ ์ ๊ฑฐํ์ญ์์ค.
rm -rf node_modules/@types/react-native
.yarnclean
@types/react-native
TypeScript 3.7์ด ์ถ์๋๋ฉด์ ์ด์ ์ ์๋ํ๋ v4.1.8์ด ์ด์ TS 3.7๊ณผ ํธํ๋์ง ์์ง๋ง TS 3.7๊ณผ ํธํ๋๋ ์ ์ผํ ๋ฒ์ ์ด ์์ ํ ์์๋์๊ธฐ ๋๋ฌธ์ 3.7 ์ฌ์ฉ์๊ฐ ์ ํ ์ ์๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ๋ ์ํฉ์ ์ฒํ์ต๋๋ค. ๋ชจ๋ React-web ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค(ํ์คํ ๋๋ค์๊ฐ ์๋์ ์ผ ๊ฒ์ ๋๋ค). ๐
.yarnclean
ํด๊ฒฐ ๋ฐฉ๋ฒ์ Yarn์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์ถฉ๋ถํ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ compilerOptions
์์ ํ๋ ๊ฒ์ ํ์ฅ ๊ฐ๋ฅํ ์ฅ๊ธฐ์ ์ธ ์๋ฃจ์
์ด ์๋๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ
์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์์๋ฐฉํธ์ผ๋ก ์ ๋ react-native
ํญ๋ชฉ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ธํ๋ ๋ณ๋์ ๋ฒ์ ์ ๊ฒ์ํ๋ ๊ฒ์ ์ฐฌ์ฑํฉ๋๋ค.
์์ฌ๊ฐ ์๋ ์ฌ์ฉ์๋ npm ์คํฌ๋ฆฝํธ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
"postinstall": "rm -rf node_modules/@types/react-native"
NPM์ด ๋ค์ดํฐ๋ธ ์ ํ์ ์ค์นํ ํ ์ฆ์ ์ญ์ ํ๋๋ก ํฉ๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์์์ผ ํ๋ ๊ฒ์ ๋ํ ํดํค ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ง์ ์ค์น ํ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์งํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค...
์ด ๋ฌธ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 1๋
์ด์(!!!) ๋์ styled-components์ ๋ชจ๋ typescript ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ด์ ๋ํ ๊ณต์ ์๋ฃจ์
์ด ์์ต๋๊น(.yarnclean์ ์ฌ์ฉํ ํดํน์ ์ ์ธ)? ์ฐจ๋จ๊ธฐ๊ฐ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ ๋ ๊ฐ์ ํจํค์ง(๋๋ ์ ์ฌ์ ์ผ๋ก ์ธ ๊ฐ์ ๊ธฐ๋ณธ ํจํค์ง, react-native์ react ๋ชจ๋์ ๋ํ ๊ณตํต ํญ๋ชฉ, ํ๋๋ react, ๋ค๋ฅธ ํ๋๋ RN์ฉ, ๊ทธ๋ฆฌ๊ณ ๋ ํจํค์ง๋ ๊ณตํต ํญ๋ชฉ๊ณผ ํจ๊ป ์ฒซ ๋ฒ์งธ ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ฒ ํจ)๋ก ๋๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฅ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋์ฒํ ์ ์์ต๋๋ค.
๋๋ ๊ธฐ๊บผ์ด ๋์์ฃผ๊ณ ์ถ์ต๋๋ค. ๋ง์ฝ ์ฐ๋ฆฌ์๊ฒ ๊ธฐ์ฌ์๊ฐ ๋ถ์กฑํ๋ค๋ฉด, ํดํนํ ํ์ ์์ด styled-component์ typescript๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฌ์ ์ผ๋ฉด ํฉ๋๋ค. ๐
๋ ๊ทธ๋ฅ ์ฃผ์์ ๋ฌผ๊ฑด์ ํดํนํ ํ์ ์์ด ์คํ์ผ์ด ์ง์ ๋ ๊ตฌ์ฑ ์์์ ํ์ดํ์คํฌ๋ฆฝํธ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฌ์ ์ผ๋ฉด ํฉ๋๋ค. ๐
์ถฉ๋! ๋ ๋์ ์ ํ ์ ์ ๊ตฌํ์ด ์์ด์ผ ํฉ๋๋ค...
๋ด node_modules์์ @types/react-native
์ ์ ๊ฑฐํ์ง๋ง ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ํดํน์๋ ๋ถ๊ตฌํ๊ณ ?
@ArnaudJeannin ์๋์ผ๋ก ์ญ์ ํ๋ค๋ฉด npm i
/ yarn
๋ฅผ ์คํํ ๋๋ง๋ค ๋ค์ ์ถ๊ฐ๋ฉ๋๋ค.
์ค์น๋ฅผ ํตํด ์ญ์ ๋ฅผ ์ง์ํ๋ ค๋ฉด ์ด์ ์๊ฒฌ์ ๋ฐ๋ผ NPM postinstall
์ ํตํด ์ ๊ฑฐํ๊ฑฐ๋ Yarn์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ .yarnclean
ํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๋ด๊ฐ ํ ์ผ์ ๋ชจ๋ ์ฌ๋์๊ฒ ์ ํฉํ์ง๋ ์์ง๋ง styled-components์์ Emotion ์ผ๋ก ์ ํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ "ํด๊ฒฐ"ํ์ต๋๋ค. ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ CSS๋ก ๊ตฌ์ฑ ์์๋ฅผ ๋ํํ๊ณ ์คํ์ผ์ ์์ํ๋ ๊ฒ๋ง์ผ๋ก ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ด์ง๋ง, ๋ด๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์ ๋ํด ์คํ์ผ ๊ตฌ์ฑ ์์์ ์ ์ฌํ API๋ฅผ ๊ฐ๊ณ ์๋ Emotion์ด ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ฌ์ด ์ ํ์ด์์ต๋๋ค. 6๊ฐ์์ด ์ง๋ ์ง๊ธ๊น์ง ํฐ ๋ฌธ์ ๋ ์์์ต๋๋ค. ๊ฐ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต TS ์
๋ ฅ์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก @types
๋๊ธฐํ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์์์ ์ธ๊ธํ๋ฏ์ด CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ๋ง์ ํ๋ก์ ํธ์ ์ ํฉํ์ง ์์ง๋ง ์ ์๊ฒ๋ ์ ํ์ด ์คํ์ผ ๊ตฌ์ฑ ์์ TS ๋ฌธ์ ์ ์จ๋ฆํ๋ ๊ฒ๋ณด๋ค ์ฌ์ ์ต๋๋ค. YMMV.
yarn
์ฌ์ฉ์๋ฅผ ์ํ ๋ ๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ํ์ฌ ๋ฒ์ ์ ์คํ์ผ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. package.json์์:
"resolutions": {
"@types/react-native": "link:./empty-package"
},
์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋์์ธ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ํจํค์ง๋ฅผ ์ค์ ํฉ๋๋ค.
mkdir empty-package
cd empty-pacakge
yarn init -y
touch index.d.ts
๋๋ฅผ ์ํด ์๋ํฉ๋๋ค.
@arimah @GabrielDuarteM , ๋น์ ์ downvote๋ฅผ ์ค๋ช ํ ์ ์์ต๋๊น? ์ด๊ฒ์ ์๋ํ๋๋ฐ ์๋ํ์ง ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๊น? ๋ด๊ฐ ๋์ธ ์ ์๋๋ก ๋๊ธ์ ๋ฌ์์ฃผ์ธ์. ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ด ์์ ์์ ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ(์ ํ ๋ชจ๋์ ์ญ์ ํ๋ ์ค์น ํ ์คํฌ๋ฆฝํธ)๋ณด๋ค ํจ์ฌ ๋ ์นจ์ ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ๋ด๊ฐ ๊นจ๋ซ์ง ๋ชปํ ๊ฐ๋ ฅํ ๋ถ์ ์ ์ธ ์ ์ด ์๋ค๋ฉด ์ฃผ์์ ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํ๊ณ ์ถ์ต๋๋ค.
@jamietre ๋๋ downvotes๊ฐ ์ด๊ฒ์ด ์๋ ํ ์๋ ์์ง๋ง ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ด ์๋๋ฉฐ ๋ฐ์ ๋ค์ดํฐ๋ธ๋ฅผ ์ํด ์ ํ์ ๋ถํ ํด์ผํ๋ค๋ ์ฌ์ค์ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค (๋๋ ์๋ง๋ ํผ์ด ์ข ์์ฑ)
@jamietre ๋๋ downvotes๊ฐ ์ด๊ฒ์ด ์๋ ํ ์๋ ์์ง๋ง ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ด ์๋๋ฉฐ ๋ฐ์ ๋ค์ดํฐ๋ธ๋ฅผ ์ํด ์ ํ์ ๋ถํ ํด์ผํ๋ค๋ ์ฌ์ค์ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค (๋๋ ์๋ง๋ ํผ์ด ์ข ์์ฑ)
ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์ด์ ์ฐํธ๋ฆฌ๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ์ค์ ์์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ํญ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๊ฒ์ 1๋ ๋๊ฒ ๋ฌธ์ ๊ฐ ๋์์ต๋๋ค. ์์ง ์์ ์ ์๋ฃํด์ผ ํฉ๋๋ค. ๐คทโโ
@jamietre ์ ์๊ฐ์๋ ๋น์ ์ด ๊ทธ๊ฒ์ "ํด๊ฒฐ์ฑ "์ผ๋ก ํ๋ ์ํํ ๊ฒ๋ฟ์ธ๋ฐ, ๊ทธ๋ ์ง ์์ ๊ฒ์ผ๋ก, ์ ์ง๋ณด์
@jamietre ์ ์๊ฐ์๋ ๋น์ ์ด ๊ทธ๊ฒ์ "ํด๊ฒฐ์ฑ "์ผ๋ก ํ๋ ์ํํ ๊ฒ๋ฟ์ธ๋ฐ, ๊ทธ๋ ์ง ์์ ๊ฒ์ผ๋ก, ์ ์ง๋ณด์
"ํด๊ฒฐ ๋ฐฉ๋ฒ"์ "ํด๊ฒฐ ๋ฐฉ๋ฒ"์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค... ์ค์ ๋ก ์ ๋ ์ฌ๋๋ค์ด typescript์ ํจ๊ป styledcomponents๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. downvotes๋ ์๋ํ์ง ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฏธ๋ก ์ ๋ํด ๋ ผ์ํ๋ ๋ฐ ๋์์ด ๋์ง ์๋ ๊ฒ ๊ฐ์ง๋ง ํ์คํฉ๋๋ค.
Appsome Solutions ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์๊ณ tsconfig.json ํ์ผ์ "skipLibCheck": true,
๊ท์น์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
@pumanitro ์ ์๋ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถํํ๋ ์ด๊ฒ์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ ๋จ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
@SamHH ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ๋ ๋จ์ด๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
์ด๊ฒ์ด typescript๋ฅผ ์ฌ์ฉํ์ฌ CRA์์ ์ํ๋๋ ๋ฐฉ๋ฒ์ด์ง๋ง ์๋ฃจ์
์ด ์๋๋๋ค. ๊ทธ๋๋ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ์ ์์ต๋๋ค.
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/32843#issuecomment -605921101์์ ๋ด ์๊ฒฌ ๋ค์ ๊ฒ์
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฒ์
๋๋ค compilerOptions.types
์์ ๋ฐฐ์ด์ํ์ฌ tsconfig.json
์๋์ผ๋ก ๋งค์ผ ์ฝ๋ ํ์ดํ ๋ผ์ดํฐ๋ฅผ ์ค์งํ๋ @types/*
๊ฒฝ์ฐ ์ ํ ๊ฒ์ฌ ํจํค์ง๋ฅผ. Typescript๋ types
๋ฐฐ์ด์ ์ด๋ฆ์ด ์ง์ ๋ ํจํค์ง ์ ํ๋ง ์๋์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. ์๋ฅผ ๋ค์ด, "types": ["node"]
( buffer
๋๋ path
์ ๊ฐ์ ๋ด์ฅ ๋ชจ๋์ ์ฌ์ฉํ์ฌ @types/node
๋ฅผ ๋ก๋ํ๋ ๊ฒฝ์ฐ), "types": ["node", "jest"]
( ๋ํ ๋๋ด ํ
์คํธ๋ฅผ ๋ค์ ์์ฑํฉ๋๋ค); ๋๋ "types": []
๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๊ฐ์ ธ์ค์ง ์์ ํจํค์ง๋ ์ฝ๋์์ /// <reference types="..." />
๋ฅผ ์๋ ๋ก๋ํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค.
@types/styled-components-native
๊ฐ ๋ ๋์์ง ์ฌ๋ถ๋ ๋งํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ต์ํ ์ด๋ก์ ์ธ ์ผ์ด๋ฉฐ compilerOptions.types
"ํด๊ฒฐ ๋ฐฉ๋ฒ"์ ํ์์ฑ์ ์ ๊ฑฐํ ์ ์์ง๋ง IMO๋ compilerOptions.types
๋ฅผ ์๋ ๋ก๋ํด์ผ ํ๋ ํจํค์ง ์ ํ์ผ๋ก๋ง ์ค์ ํฉ๋๋ค( import
์์ด
์์ฝํ์๋ฉด, ๋ฌธ์ ๋ ๊ธฐ๋ณธ ๋์์ด ๋ชจ๋ @types/*
ํจํค์ง๋ฅผ ๋ก๋ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ์ฐธ์กฐํ์ง ์์์๋ ๋ถ๊ตฌํ๊ณ TypeScript๊ฐ ์๋์ผ๋ก @types/react-native
์ ํ์ ๋ก๋ํ๋ค๋ ๊ฒ์
๋๋ค. compilerOptions.types
๋ฅผ ์ค์ ํ๋ฉด ํด๋น ๊ธฐ๋ณธ๊ฐ์ด ๋ฐฉ์ง๋๊ณ ๋์ดํ ํจํค์ง + import
ํจํค์ง๋ง ๋ก๋๋ฉ๋๋ค.
์ด๊ฒ์ด ์ฌ์ ํ ๋ฌธ์ ๋ผ๋ ๊ฒ์ด ๋ฏฟ๊ธฐ์ง ์์ต๋๋ค! ์ง๋ ์ฌ๋ฆ์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ, ๊ทธ ์ดํ๋ก ์์ ๋์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ฐฉ๊ธ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค. ๐
@types/styled-components์ ๊ด๋ฆฌ์๋ ๋๊ตฌ์ ๋๊น? ์ฐ๋ฆฌ๋ ์๋ก์ด ์ฌ๋์ด ํ์ํ๊ธฐ ๋๋ฌธ์
compilerOptions.types
์ @Jessidhia ์ ์์ด ํจ๊ณผ์ ์ด์์ต๋๋ค. ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค! ๋๋ ์ด๊ฒ์ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ก๋ ๋ณธ๋ค. ์ง๊ธ๊น์ง๋ ์๋ฌด๋ฐ ๋ถ์ด์ต๋ ๊ฒฝํํ์ง ์์์ต๋๋ค. ๋ ๋น ๋ฅด๋ค๋ ๊ฒ๋ ์์ํ ์ ์์์ต๋๋ค.
@sbusch ๋จ์ ์ compilerOptions.types
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ๋ชฉ๋ก์ ํฌํจ๋์ง ์์ ๋ชจ๋ ํญ๋ชฉ์ด ์ ์ธ๋๋ฏ๋ก ๋ชจ๋ ์
๋ ฅ์ด ์ฌ๊ธฐ์ ๋์ด๋์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์
๋ ฅ์ ์ ๊ณตํ๋ ์ค์น๋ ํจํค์ง์ ๊ฒฝ์ฐ ์ด ๊ตฌ์ฑ์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
์, ๋ชจ๋ ์ ํ์ ์ ํ์ผ๋ก ๋์ดํ๋ ๊ฒ์ ์ต์ ์ด ์๋๋๋ค.
๋ชจ๋์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉด ์ฌ์ ํ TypeScript ์
๋ ฅ์ ๋ฐ์ต๋๋ค. types
์ต์
์ ์ ์ญ ์ ์ธ์ ์ ํ์ ์๋์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์์ฃผ ํ์ํ์ง ์์ผ๋ฏ๋ก ํด๋น ๋ชจ๋์ types
์ ์๋์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ๋ ๋์์ง ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ์ดํดํฉ๋๋ค. types
๋ฐฐ์ด์ []
์ค์ ํ ํ์๋ ๋งค์ฐ ์๊ฒฉํ TS ์ค์ ์ ๊ฐ์ง ์๋นํ ํฐ TS ์ฝ๋๋ฒ ์ด์ค๋ ์ฌ์ ํ ์๋ํ์ต๋๋ค.
์๋ฅผ ๋ค์ด https://stackoverflow.com/a/59030291์ ์ฐธ์กฐํ์ญ์์ค.
๋จ์ ์
compilerOptions.types
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ๋ชฉ๋ก์ ํฌํจ๋์ง ์์ ๋ชจ๋ ํญ๋ชฉ์ด ์ ์ธ๋๋ฏ๋ก ๋ชจ๋ ์ ๋ ฅ์ด ์ฌ๊ธฐ์ ๋์ด๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ ์ ๊ณตํ๋ ์ค์น๋ ํจํค์ง์ ๊ฒฝ์ฐ ์ด ๊ตฌ์ฑ์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
@sbush๊ฐ ๋งํ๋ฏ์ด ์ด๊ฒ์ ์ฌ์ค์ด ์๋๋๋ค. ์ด ์ต์
์ ์ ์ญ ์ ํ์๋ง ํด๋น๋๋ฉฐ import
ed libs์ ์
๋ ฅ์ ๋ฌธ์ ์์ด ์ฌ์ฉ๋ฉ๋๋ค. @Jessidhia ์ ์ ์์ ๋ฌดํดํฉ๋๋ค.
๋๋ ๋จ์ผ ํจํค์ง๊ฐ ์๋น์๋ค๋ก ํ์ฌ๊ธ ๊ทธ ๋ถ์ผ๋ฅผ ๊ทธ๋๋ก ๋๋ ๊ด์ต์ ๊นจ๋๋ก ๊ฐ์ํด์๋ ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ฒ์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ชจ๋
ธ ๋ ํฌ Lerna + yarn workspaces
(๋ต๋ณ์ด ๋๋ฌด ๋ง์)๊ฐ ์๋ ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ ์ด๋ฏธ ์ผ์ด์ค์ ๋ต๋ณํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํธ์ค ์น์ฌ์ดํธ์์ no-hoist
์์ฑ์ ๋ ๋ง์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
package.json
ํ์ผ์ ์ฌ๋ก:
"workspaces": {
"packages": ["packages/*"],
"nohoist": ["**/react-native", "**/react-native/**"]
}
๐๐ป @types/styled-components": "4.1.8"
๐๐ป
์์ฌ monorepos๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ฃจ์ @nahumzs๊ฐ ์ ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ react-native๊ฐ ์ ์ญ node_packages ํด๋๋ฅผ ์ค์ผ์ํค์ง ์๋๋ก ํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ค๋ณต์ ๋ฐฉ์งํฉ๋๋ค.
์ด๋ค ์์ ์์ React Native ์ฌ์ฉ์๋ณด๋ค React Web ์ฌ์ฉ์๊ฐ ๋ ๋ง๋ค๊ณ ๋งํ๊ณ React Native ์ง์์ ์ ๊ฑฐํฉ๋๊น?
์ด ๋ฌธ์ ์ ๋ํ ์ง์ ์ด ์์์ต๋๊น? npm ์ค์น ํ ๋ช ๋ น์์ node_modules/@types/react-native ์ญ์ ์ ๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ ํด๊ฒฐ ๋ฐฉ๋ฒ ์์ด ์ ๋ฐ์ดํธํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ฌ @types/styled-components ๋ฒ์ 4.1.8์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ค ์จ๋ฐ, ์ด ๋ฌธ์ ๋ ๋์๊ฒ ์ ๋ง ๋ง์ ๊ณ ํต์ ์ค๋ค.
์ด์ ์ฌ๊ธฐ์ ์ค๋ช
๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ต์ Typescript๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด @types/[email protected]
๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๐ก๐ก๐ก WTH.
์ด์จ๋ ์ด๊ฒ์ https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33015 ์ ๋ณต์ ๋ณธ์ธ ๊ฒ ๊ฐ์ต๋๋ค
Appsome Solutions ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์๊ณ tsconfig.json ํ์ผ์
"skipLibCheck": true,
๊ท์น์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ์๊ฐ์ ํ๋ ๊ฒฝ์ฐ: ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด skipLibCheck
๋ฅผ ํ์ฑํํ๊ณ ์ถ์ง ์์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์๋ก์ด TypeScript ํ๋ก์ ํธ์ ๋ํด skipLibCheck
ํ์ฑํ๋์ด ๋ง์์ด ๋ฐ๋์์ต๋๋ค. ๋ถ๋ช
ํ ์ฑ๋ฅ์์ ์ด์ ์ง๋ง ์ฌ๊ธฐ์์ ๋ณด๊ณ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ๋๋ฌธ์ ์์ํ ์๋ ์์ต๋๋ค.
์์ฃผ ๋๋ฌ์ด ํดํน์ผ๋ก ๊ด์ฐฎ์ ์ฌ๋์ผ ์๋ ์์ต๋๋ค. package.json
์คํฌ๋ฆฝํธ ์น์
์ ๋ค์์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
"postinstall": "rm -rf node_modules/@types/react-native"
ํ๋ฅญํ ์๋ฃจ์ ์ ์๋์ง๋ง ์๋ํด์ผ ํฉ๋๋ค.
์ธ์์, ์ด ๋ฌธ์ ๋ 5.1.1์์๋ ์ฌ์ ํ ์ ํจํฉ๋๋ค.
1- ํ๋ก์ ํธ ๋ฃจํธ์ .yarnclean
๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2- @types/react-native
๋ด์ฉ์ ์ฝ์
ํฉ๋๋ค.
์ด๊ฒ์ ์ ์ด๋ ๊ณต์ ์๋ฃจ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ฌ๊ธฐ์์ ํด๊ฒฐ๋์์ต๋๋ค.
์ด๊ฒ์ด 1.5๋ ๋๊ฒ ๊ณ์๋๊ณ ์์ต๋๋ค. ์ด์จ๋ ๋ด ๋ฌธ์ ๊ฐ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๊ณ ๋ ๋ง์ "์ค๋ณต ์๋ณ์" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด 36๊ฐ.
tsconfig.json
{
"compilerOptions": {
"allowJs": true,
"baseUrl": ".",
"esModuleInterop": true,
"isolatedModules": true,
"jsx": "react",
"module": "CommonJS",
"moduleResolution": "Node",
"noEmit": true,
"sourceMap": true,
"target": "ES6"
},
"include": [
"src/**/*"
],
}
tsc
๋ก ์ปดํ์ผํ ๊ฒฐ๊ณผ:
์ด: 38๊ฐ์ ์ค๋ฅ. ๊ทธ ์ค 2๊ฐ๋ง ์ค์ ํ๋ก์ ํธ ์์ค src/**.*
ํ์ผ์์ ๊ฐ์ ธ์์ต๋๋ค. ๋ค๋ฅธ 36๊ฐ์ ์ค๋ฅ๋ @types/styled-components
์ธํ .d.ts
์ถฉ๋์์ ๋ฐ์ํฉ๋๋ค.
์ฐธ๊ณ : "skipLibCheck": true
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค. ๋ํ @types/styled-components
์ ๊ฑฐํ๋ฉด ์ค๋ฅ๋ ์ฌ๋ผ์ง๋๋ค.
์ฌ๊ธฐ์ ์ ์ฒด ๋ก๊ทธ๋ฅผ ๊ฒ์ํ์ง ์๊ฒ ์ง๋ง ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์๊ฐ ์์ต๋๋ค.
error TS2300: Duplicate identifier 'AbortController'.
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:1939:11
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:1950:13
node_modules/@types/react-native/globals.d.ts:363:15
error TS2300: Duplicate identifier 'AbortSignal'.
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:1960:11
node_modules/@types/react-native/globals.d.ts:350:15
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:1972:13
error TS2300: Duplicate identifier 'FormData'.
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:5548:11
node_modules/@types/react-native/globals.d.ts:40:15
../../../AppData/Roaming/npm/node_modules/typescript/lib/lib.dom.d.ts:5558:13
error TS2300: Duplicate identifier 'URL'.
error TS2300: Duplicate identifier 'URLSearchParams'.
error TS2300: Duplicate identifier 'RequestInfo'.
error TS2300: Duplicate identifier 'XMLHttpRequestResponseType'.
error TS2717: Subsequent property declarations must have the same type. Property 'body'
must be of type 'string | ArrayBuffer | ArrayBufferView | Blob | FormData | URLSearchParams | ReadableStream<Uint8Array> | null | undefined',
but here has type 'string | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | ... 8 more ... | undefined'.
error TS2717: Subsequent property declarations must have the same type. Property 'signal' must be of type 'AbortSignal | null | undefined', but here has type 'AbortSignal | undefined'.
error TS2300: Duplicate identifier 'RequestInfo'.
์ด ์์ ์์ ๋ด๊ฐ ์ฑํํ๊ณ ์๋ ์๋ฃจ์
์ @types/styled-components
๋ฅผ ์ ๊ฑฐํ๊ณ ๋ด ํ๋ก์ ํธ(React ์น ์ฑ)๋ฅผ ๊ณ์ ์งํํ๋ ๊ฒ์
๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์ ์ปดํ์ผ๋ฌOptions.types์ ์ํด ์๋์ผ๋ก ์์ ๋จ