https://reactnative.dev/docs/typescript
-Adding TypeScript to an Existing Project
npm install -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer
make tsconfig.json
{
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "isolatedModules": true,
    "jsx": "react-native",
    "lib": ["es2017"],
    "moduleResolution": "node",
    "noEmit": true,
    "strict": true,
    "target": "esnext"
  },
  "exclude": [
    "node_modules",
    "babel.config.js",
    "metro.config.js",
    "jest.config.js"
  ]
}index.js는 절대 건딜지 말것
.js ---> .tsx 로 모두 바꿔줄것
https://styled-components.com/docs/api#typescript
npm install --save @types/styled-components
npm install --save @types/styled-components @types/styled-components-react-native
2-1. make styled.d.ts file
import 'styled-components'
declare module 'styled-components' {
  export interface DefaultTheme {
    mainBgColor: string
    textColor: string
    accentColor: string
  }
}~~~~
mainBgColor, textColor, accentColor은
styled.js에 있는 변수임
사용!
~~const Column = styled.View`
  justify-content: center;
  align-items: center;
  background-color: ${props => props.theme.mainBgColor};
`~~
# 3. react-navigation typescript
https://reactnavigation.org/docs/typescript/
const Movies: React.FC<NativeStackScreenProps<any, 'Movies'>> = ({
  navigation,
}) => (
  <Header>
    <Column>
      <Btn onPress={() => navigation.navigate('Stack', { screen: 'three' })}>
        <Title>Movies</Title>
      </Btn>
    </Column>
    <Fotter>123123</Fotter>
  </Header>
Similarly, you can import StackNavigationProp from @react-navigation/stack, DrawerNavigationProp from @react-navigation/drawer, BottomTabNavigationProp from @react-navigation/bottom-tabs etc.