我正在使用TS 0.9.5,有些东西只是打我。
class X { }
class Y { }
function y(p: Y) { }
y(new X);
如何编译没有错误?我们隐含了任何禁用,因此它应该是强类型的。这是一个错误吗?
编辑现在我了解空类的内容。问题是我有一个不同的问题,并试图简化。我简化了太多。
我实际上遇到了多个重载和一个具有较少特定签名的实现的问题。
这里是编译但不应该编译的: sample 1
并且继承了不会按预期编译的版本,但实现参数和返回类型完全不明确:sample 2
对不起,这是一个有点复杂的样本。
答案 0 :(得分:1)
这不是一个错误。 TypeScript将忽略空类,接口和模块。因此,因为X和Y都是空的,所以不适用类型检查。
要对Y进行强类型检查,必须在Y中定义属性。
class X {
}
class Y {
name : string;
}
function y(p: Y) { }
y(new X()); // Fails because Y is now defined, and X is not compatible.
这是设计的。