Typescript: 声明前使用的类“ x”

创建于 2017-08-11  ·  4评论  ·  资料来源: microsoft/TypeScript

##

TypeScript版本: 2.4.1
Visual Studio版本: 14.0.25420.01更新3

文件:ParallelogramF.ts
namespace JMath { export class ParallelogramF extends Polygon { ... } }
文件:Polygon.ts
namespace JMath { export class Polygon { } }

预期行为:
必须正确知道类多边形。

实际行为:
发生错误:声明之前使用的类Polygon。

出现这种情况只有在“合并的JavaScript输出到文件”复选框在项目属性被选中,一些“xxx.js”文件名是在它前面指定。

解:
1-当我将文件“ ParallelogramF.ts”的名称更改为“ ZParallelogramF.ts”时,问题解决了,并且可以正确编译!!!
2-当我取消选中“将JavaScript输出合并到文件中”复选框时,它将正确编译!!!

将项目“ .csproj”文件中“ TypeScriptCompile Include =“ ParallelogramF.ts””的位置更改为其父标记内的最后一项没有帮助。

Question

最有用的评论

@arashebrahimi尝试添加
/// <reference path="Polygon.ts"/>
到ParallelogramF.ts文件的顶部

可能有一种“较新的”方法,但这使编译器知道在编译为单个文件时在ParallelogramF.ts之前编译Polygon.ts。

所有4条评论

您会注意到,在遇到错误的情况下,编译后的代码将无法运行。

多谢您的回覆,

我找不到这个问题与您的回应之间的关系?!
很明显,当出现错误时,编译后的代码将无法运行!

但是我在编译时谈到了不正确的“错误”!
我在哪里谈论“奔跑” ???

我说编译时有一个错误,应该没有错误地进行编译,但是会出现“不正确”错误!!!

@arashebrahimi尝试添加
/// <reference path="Polygon.ts"/>
到ParallelogramF.ts文件的顶部

可能有一种“较新的”方法,但这使编译器知道在编译为单个文件时在ParallelogramF.ts之前编译Polygon.ts。

我不明白这是预期的行为。 问题在于,子类在同一个名称空间中不会被这样识别-从理论上讲,应该消除显式调用该引用的需要。 编译器应_know_在任何子类和所有子类之前编译基类。

我相信@arashebrahimi所说的是,这似乎是一个字母顺序化的问题,在基类之后的子类(在文件名中)按字母顺序识别继承关系,而在先后的子类则不能识别继承关系。 我发现此问题对于接口不存在。

我可以在Visual Studio版本15.4.5中使用TS 2.5.3重现此问题。

此页面是否有帮助?
0 / 5 - 0 等级