React Navigation + TypeScript 오류 : 'EventStackParams'유형이 'Record <string, object | 정의되지 않음> '

Nov 18 2020

React Native / React Navigation 5 Navigator에 TypeScript를 추가 EventStackParams하고 있지만 createStackNavigator().

React Native 5 Docs , StackOverflow 및 GitHub를 살펴 봤지만 운이 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 아래는 내 오류와 코드입니다.

오류:

Type 'EventStackParams' does not satisfy the constraint 'Record<string, object | undefined>'.

Index signature is missing in type 'EventStackParams'.ts(2344)

Navigation.tsx :

// Imports: TypeScript Types
import { EventStackParams } from '../types/types';

// React Navigation: Stack Navigators
const RootStack = createStackNavigator();
const EventsStack = createStackNavigator<EventStackParams>();

// Events Navigator
const EventsNavigator = () => (
  <EventsStack.Navigator initialRouteName="Events">
    <EventsStack.Screen
      name="Events"
      component={Events}
      options={{
        title: '',
        headerShown: false,
      }}
    />

    <EventsStack.Screen
      name="EventDetails"
      component={EventDetails}
      options={{
        title: '',
        headerShown: true,
        headerStyle: {
          elevation: 0,
          shadowOpacity: 0,
          borderBottomWidth: 0,
        },
      }}
    />
  </EventsStack.Navigator>
);

EventDetails.tsx

// Imports: Dependencies
import { RouteProp } from '@react-navigation/native';

// Imports: TypeScript Types
import { ReduxState, EventStackParams } from '../../types/types';

// React Hooks: React Navigation
const route = useRoute<RouteProp<EventStackParams, 'EventDetails'>>();

Types.tsx :

// TypeScript Type: Event
export interface Event {
  eventTitle: string,
  eventDescription: string | null,
  eventStreet: string,
  eventLocation: string,
  eventLatitude: number,
  eventLongitude: number,
  eventDateStart: number,
  eventDateEnd: number,
  eventTimeStart: string,
  eventTimeEnd: string,
};

// TypeScript Type: Event Stack Params
export interface EventStackParams {
  Events: undefined,
  EventDetails: {
    item: Event,
  },
};

답변

1 jefelewis Nov 19 2020 at 00:31

최신 정보:

이 문제는 interfacetype.

// TypeScript Type: Event Stack Params
export type EventStackParams = {
  Events: undefined,
  EventDetails: {
    item: Event,
  },
};