React中如何对对象的属性进行约束呢?

请问下,现在有代码如下:


import { TabsWithBreadcrumbs } from '../../components/Common/TabsWithBreadcrumbs'

export const createTabsSlice = (set:any, get:any) => ({

  tabs: [
   { title: 'demo01', due: '2023-05-05' },
   { title: 'demo02', due: '2023-05-06' },
   { title: 'demo03', due: '2023-05-07' }
  ],

  addTab: () => {
    
  },

  removeTab: () => {

  }
})

TabsWithBreadcrumbs如下:

(alias) type TabsWithBreadcrumbs = {
    title: string;
    breadcrumbs: string[];
    key: string;
    children: React.ReactNode;
}[]

这里想要对tabs 参数做类型的约束。

请问两个问题,
1、使用 TabsWithBreadcrumbs 作为约束,应该怎么写呢?
2、如果是想要使用 TabsWithBreadcrumbs(数组)其中一个元素作为约束,又应该怎么写呢?

阅读 895
2 个回答
✓ 已被采纳

代码中对象作为函数的返回值,所以如果想约束对象,那么声名函数返回值的类型即可:

type TabsWithBreadcrumbs = {
    title: string;
    breadcrumbs: string[];
    key: string;
    children: React.ReactNode;
};
interface TabsSlice {
    tabs: TabsWithBreadcrumbs[];
}
export const createTabsSlice = (set: any, get: any): TabsSlice => ({
    tabs: [
        { title: "demo01", due: "2023-05-05" },
        { title: "demo02", due: "2023-05-06" },
        { title: "demo03", due: "2023-05-07" },
    ],

    addTab: () => {},

    removeTab: () => {},
});

如果是类型约束的话可以用 interface

interface Tabs {
    title: string,
    due: string,
}

使用例子:useState<Tabs[]>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏