在VSCode导出函数时:“个别声明必须全部导出或全部本地”
我最近升级到Visual Studio Code 0.5.0和一些新的错误,出现以前没有。
我有一堆在本地声明,然后导出的函数。 但是,自升级以来,hover在每个本地函数名称上都会产生错误。合并声明中的单个声明functionName必须全部导出或全部为本地。
这是一个导出的本地函数示例。
var testParamsCreatorUpdater = function (lTestParams, creatorID){ lTestParams.creator = creatorID; return lTestParams; }; module.exports.testParamsCreatorUpdater = testParamsCreatorUpdater;
我知道我可以改变这个…
module.exports.testParamsCreatorUpdater = function (lTestParams, creatorID){ lTestParams.creator = creatorID; return lTestParams; };
并prepend module.exports。 给每个testParamsCreatorUpdater()调用。
但为什么第一个片段错了? 据我所知,require()使module.exports对象中的所有东西都可用于任何需要它的东西。
我认为这与TypeScript ref的合并声明的function有关。 我还没有对Typescript进行详细的研究,但似乎可以在Typescript文件中包含Javascript。
我猜testParamsCreatorUpdater在Javascript中声明的方式被VSCode检测为错误,因为它认为这两个声明不能被合并。
我认为在JavaScript级别上,它不能区分:
var testParamsCreatorUpdater = ...
和
module.exports.testParamsCreatorUpdater = ...
因为名字是一样的。 我在TypeScript中得到了完全相同的错误(引导我到这篇文章),当我尝试这个:
import { AuditService } from '../services/audit.service'; import { Audit } from '../models/audit.model'; @Component({ selector: 'audit', templateUrl: './audit.component.html', }) export class Audit { constructor(private auditService: AuditService) { } }
所以TypeScript不喜欢我导入一个称为审计模块,并导出一个类也称为审计 。