你们知道用什么方法来表示一个变量的类型吗,我们可以确定这个变量的值在Typescript中的一个数组中?
对于Puple,我想在标签栏上显示一个标签列表:
const TabsBar= ({tabs}: {tabs: string[]}) => {
const [activeTab, setActiveTab] = useState<string>(tabs[0]) //the active tab by default is the first tab in array of tabs
useEffect(() => {
setActiveTab(tabs.find(tab => tab === activeTab))//give error Argument of type 'string | undefined' is not assignable
//to parameter of type 'string'. How to define type of "tabs" and "activeTab" so that the error disappear?
}, [tabs, activeTab])
...
}
字符串
而且在标签有这种形式{id:number;title:string}
的情况下,如何使tabs.find(tab => tab.id === activeTab.id)
没有错误?
谢谢你!
3条答案
按热度按时间uyto3xhc1#
你的具体问题与数组可能为空的事实有关,为了让Typescript像你一样,做两件事:
假设
Tab
是你的类型,也可能是string
。1.使用此语法告诉typescript数组中至少有一个元素。
字符串
2.处理
find
返回undefined的情况。型
ccgok5k52#
您可以使用TypeScript泛型来定义
tabs
数组和activeTab
状态的类型,以及as
关键字来Assertfind
的结果不会是undefined
。字符串
7vhp5slm3#
如果您这样做:
字符串
那么,应该没问题,虽然,它并没有完全回复你的请求。
否则,你必须在这里放一个感叹号(非空Assert运算符):
型