typescript - 类型函数可以用任何类型的参数调用吗?

时间:2014-02-17 15:29:14

标签: typescript

我正在使用TS 0.9.5,有些东西只是打我。

class X { }

class Y { }

function y(p: Y) { }

y(new X);

如何编译没有错误?我们隐含了任何禁用,因此它应该是强类型的。这是一个错误吗?

这是一个游乐场样本:http://www.typescriptlang.org/Playground/#src=class%20X%20%7B%20%7D%0A%0Aclass%20Y%20%7B%0A%7D%0A%0Afunction%20y(p%3A%20Y)%20%7B%20%7D%0Ay(new%20X)%3B

编辑现在我了解空类的内容。问题是我有一个不同的问题,并试图简化。我简化了太多。

我实际上遇到了多个重载和一个具有较少特定签名的实现的问题。

这里是编译但不应该编译的: sample 1

并且继承了不会按预期编译的版本,但实现参数和返回类型完全不明确:sample 2

对不起,这是一个有点复杂的样本。

1 个答案:

答案 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.

这是设计的。