React.createContext的TypeScript语法疑问:两组属性作用解析
这段React+TypeScript代码的语法解释
React.createContext是React用来创建上下文的API,核心作用是让组件树中的组件能共享状态,不用通过props层层传递。
你看到的两组signIn/signOut/user是完全不同的两部分:
尖括号
<>内的是TypeScript类型定义
这部分是给AuthContext做类型约束的,告诉TypeScript:这个上下文对象必须包含三个成员:signIn:无参数、返回值为void的函数signOut:与signIn类型一致的函数user:类型为UserType | null(要么是UserType实例,要么是null)
这部分仅在TypeScript编译阶段生效,用来校验后续使用该上下文时的类型是否合规,不会生成实际的JavaScript代码。
圆括号
()内的是上下文的默认值
这是当组件没有被对应的AuthContext.Provider包裹时,调用useContext(AuthContext)会获取到的兜底值。这里给出的是空实现的函数(调用后无任何操作)和null值的user,主要是为了避免组件在未被Provider包裹时获取上下文报错。
你猜测的“第一组定义返回内容,第二组是接收的参数”并不准确,二者的核心区别是:一个是TypeScript的类型校验规则,一个是上下文的默认兜底数据。
内容的提问来源于stack exchange,提问作者monty_lennie
相关产品推荐
相关产品推荐

