使用Typescript 2.6.2,我开发了一个返回Observable的函数。此功能是在我作为名为 my-package 的包发布的模块中开发的。
该功能在文件 my-function.ts 中定义为
import { Observable } from 'rxjs/Observable';
export function myFunction() {
return Observable.from([1,2,3]));
}
该模块的 index.ts 就是这样
import {myFunction} from './my-function';
export {myFunction};
现在我想在另一个项目中使用 my-function 。因此,我导入了 my-package ,然后编写了一个新函数 newFunction ,它在一个看起来像
my-function >import {myFunction} from 'my-function';
export function newFunction() {
return myFunction();
}
如果我这样做,当我尝试编译最后一个文件时,我收到一个错误,其文本为
导出函数的返回类型已经或正在使用名称' Observable'来自外部模块"〜/ node_modules / rxjs / Observable"但无法命名。
为了解决这个问题,我必须更改 newFunction 的代码
import { Observable } from 'rxjs/Observable';
import {myFunction} from 'my-function';
export function newFunction(): Observable<any> {
return myFunction();
}
有没有办法避免编译器问题而不必明确声明 newFunction 的返回类型?
答案 0 :(得分:3)
该错误消息明确提及&#34;名称Observable
&#34;,这不在定义newFunction
的模块范围内,这会阻止编译器生成类型声明文件那个模块。
要修复它,您只需要导入该名称 - Observable
- 仅此而已。只需将此行添加到newFunction
模块:
import { Observable } from 'rxjs/Observable';
这足以让编译器在生成的newFunction
文件中拼出.d.ts
的推断返回类型,您不必明确声明该返回类型。