首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接口不满足约束'Record<string,object | undefined>‘。类型‘StackParamList’中缺少索引签名。.ts(2344)

接口不满足约束'Record<string,object | undefined>‘。类型‘StackParamList’中缺少索引签名。.ts(2344)
EN

Stack Overflow用户
提问于 2020-08-30 07:25:18
回答 2查看 2.6K关注 0票数 1

使用TypeScript 3.9,React Native,React导航...

我收到错误:

代码语言:javascript
运行
复制
interface StackParamList
Type 'StackParamList' does not satisfy the constraint 'Record<string, object | undefined>'.
  Index signature is missing in type 'StackParamList'.ts(2344)

在以下位置:

代码语言:javascript
运行
复制
const HomeStack = createStackNavigator<StackParamList>()

在:

代码语言:javascript
运行
复制
const HomeStack = createStackNavigator<StackParamList>()

export interface StackParamList {
  Home: undefined
  Post: { post: Post }
  Category: { category: Category }
  Login: undefined
  ForgotPassword: undefined
  'My profile': undefined
  'My partner': undefined
  Parameters: undefined
  Likes: undefined
  Onboarding: undefined
}

/**
 * Home "stack navigator"
 * @summary this is the navigator for everything located under "home"
 */
export default function HomeStackScreen() {
  return (
    <>
      <StatusBar backgroundColor={colors.background} barStyle="dark-content" />
      <HomeStack.Navigator screenOptions={screenOptions}>
        <HomeStack.Screen
          name="Home"
          component={HomeScreen}
          options={{
            headerTitle: (props) => <Logo {...props} />,
          }}
        />
        <HomeStack.Screen name="Login" component={LoginScreen} />
        <HomeStack.Screen name="Post" component={PostScreen} options={{ headerTransparent: true, title: '' }} />
        <HomeStack.Screen name="Category" component={CategoryScreen} options={({ route }) => ({ title: route.params.category.id })} />
        <HomeStack.Screen name="ForgotPassword" component={ForgotPasswordScreen} />
        <HomeStack.Screen name="My profile" component={UserProfileScreen} options={{ headerTransparent: true, title: '' }} />
        <HomeStack.Screen name="My partner" component={UserPartnerScreen} />
        <HomeStack.Screen name="Parameters" component={UserParamScreen} />
        <HomeStack.Screen name="Likes" component={UserLikesScreen} />
        <HomeStack.Screen name="Onboarding" component={Onboarding} options={{ headerShown: false }} />
      </HomeStack.Navigator>
    </>
  )
}

我不明白为什么接口不能满足类型'Record‘。

我不明白“索引签名丢失”是什么意思。

你有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-11-19 09:02:22

我能够通过将接口更改为type来修复此问题。Here's the link to the StackOverflow post.

错误修复:

代码语言:javascript
运行
复制
// TypeScript Type: Stack Param List
export type StackParamList = {
  Home: undefined
  Post: { post: Post }
  Category: { category: Category }
  Login: undefined
  ForgotPassword: undefined
  'My profile': undefined
  'My partner': undefined
  Parameters: undefined
  Likes: undefined
  Onboarding: undefined
};
票数 3
EN

Stack Overflow用户

发布于 2020-08-30 07:27:22

我通过添加以下内容解决了这个问题:

代码语言:javascript
运行
复制
| Record<string, object | undefined>

在以下位置:

代码语言:javascript
运行
复制
export type StackParamList =
  | {
      Home: undefined
      Post: { post: Post }
      Category: { category: Category }
      Login: undefined
      ForgotPassword: undefined
      'My profile': undefined
      'My partner': undefined
      Parameters: undefined
      Likes: undefined
      Onboarding: undefined
    }
  | Record<string, object | undefined>

我还是不明白为什么需要它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63652687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档