【发布时间】:2017-09-06 05:10:21
【问题描述】:
使用 tsc v2.2.2
如何修复 typescript 编译器错误:
错误 TS4058:导出函数的返回类型有或正在使用名称 来自外部模块的“{SomeInterface}” “{一些路径}/dist/types” 但不能命名。
我有 index.ts 和 something.ts
的文件夹// index.ts
import something from './something'
// error will point on this export below
export default function () {
return {
resultFunctionFrom: something()
};
}
// something.ts
import {ICoolInterface} from 'some-module'
export default function () {
return function (rootOfEvil:ICoolInterface) {
// ...
};
}
我会用这样的代码得到这个错误:
错误 TS4058:导出函数的返回类型有或正在使用名称 来自外部模块的“IcoolInterface” “/文件夹/node_modules/some-module/dist/types” 但不能命名。
【问题讨论】:
-
ICoolInterface用于默认导出的推断返回类型,但ICoolInterface不导出。添加export ICoolInterface应该可以解决您的问题。欲了解更多信息:github.com/Microsoft/TypeScript/issues/8612 -
@cartant 不,我尝试添加 export {IcoolInterface} 没有成功。即使导出仍然有错误。
-
我以前解决过这个问题,但我想我的回忆有点可疑。可能是您需要明确返回类型:
export default function (): (coolInterface: ICoolInterface) => void /* or whatever the return type is */ { ... }- 而不是让它被推断出来。 -
@cartant for me return type :any for default export in 'index.ts' 成功了。并且无需导出ICoolInterface。也许使用 :any 这样的做法是一种不好的做法,但至少它可以编译,并且我在 'something.ts' 中的函数用 arg 类型和返回类型很好地描述了。
标签: typescript typescript-typings typescript2.0