为什么VSCode在此订阅上给我键入错误?

时间:2018-06-27 10:05:19

标签: visual-studio-code rxjs typescript-typings subscription aws-amplify

我正在使用VSCode来学习本教程https://aws.github.io/aws-amplify/media/api_guide#subscriptions

我的VSCode不断告诉我subscribe方法有错误。

当我查看graphql方法的定义时,它告诉我graphql({query, variables}: GraphQLOptions): Promise<GraphQLResult> | Observable<object>;

它可以返回一个promise或一个Observable。好吧,我正在尝试订阅这个可观察的内容。我究竟做错了什么?为什么VSCode一直告诉我那里有错误?

enter image description here

错误是:'subscribe' property does not exist in type 'Promise<GraphQLResult> | Observable<object>'.

我必须在tsconfig.json中进行配置吗?

编辑:添加一个graphql方法定义的屏幕。

enter image description here

1 个答案:

答案 0 :(得分:1)

打字稿错误是正确的:.subscribe()方法在类型签名Promise<GraphQLResult> | Observable<object>中不存在。这是因为Promise的原型中没有它。

要使键入再次起作用,您要么只需要从graphql()函数返回可观察到的值,要么将其返回值强制转换为Observable<object>(可能导致nullref)。您还可以使用Observable.from()包装调用代码,该代码以Promiselike作为参数来标准化签名。