请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于泛型

关于泛型,看了这么久,也想了很多,还是有些懵,有时候又怕过渡思考,想得太多,以我看到现在的理解来看,TS应该是加载JS上的一层规范,我更多的理解是,如果在编写代码过程中,我创建了一个变量,函数之类的,我希望该变量,函数是什么样子,再来用ts对其座一层规范。

export interface GlobalDataProps {
  columns: ColumnProps[];
  posts: PostProps[];
  user: UserProps;
}
const store = createStore<GlobalDataProps>({
  state: {
    columns: testData,
    posts: testPosts,
    user: { isLogin: false }
  },

老师这节的代码,定义并导出了一个GlobalDataProps interface,我们希望一个对象具有columns,posts是一个对象,并且它们的属性需要跟ColumnProps,PostProps分别一样,但接下来我就感觉很迷。
createStore用到了一个泛型GlobalDataProps,看老师代码的样子,是希望store 里面的state为GlobalDataProps的样子,但是老师也没写成state:GlobalDataProps啊。
包括后面,使用store时,也是用了这个泛型:

import { GlobalDataProps } from '../store'

...
const store = useStore<GlobalDataProps>()

我现在就感觉整个人都很晕,对于这东西的理解,与应用,都有些不知所措,其实我觉得我并不想理解这东西,就只想会用这东西,就像鸭子辩型一样,但看了几遍文档之后,还是感觉有些不知道该如何正确使用。

正在回答 回答被采纳积分+3

1回答

提问者 见信 2020-11-16 14:19:38

而且我并不明白的是为什么后面使用store时又传这个泛型进去,是为了语法提示吗?

0 回复 有任何疑惑可以回复我~
  • 张轩 #1
    是为了语法提示 useStore 需要接受一个泛型,store 对象是被 app.use 注入到整个Vue 应用中的去,这个使用我们可以使用 useStore 访问到这个 store,但是这个时候没法推断出 store(完全是两个文件,两块内容) 中的类型,需要手动传入类型
    回复 有任何疑惑可以回复我~ 2020-11-17 08:40:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信