尽管定义了函数参数的类型,但是当我传递错误的类型时,编译器不会给我编译错误。
class A
{
constructor(public data: any)
{}
};
class B extends A
{
constructor(instance: A)
{
if (B.validate(instance.data))
super(instance.data)
else
throw 'error';
}
static validate(instance: A): boolean
{
return typeof instance.data == 'number';
}
}
let a = new A(null);
let b = new B(a);
if (B.validate(instance.data))
行是错误的,我希望编译器会出错,但编译正常。
答案 0 :(得分:3)
instance.data
的类型为any
,允许将其传递给任何预期的类型。如果需要编译错误,则需要给它一个更特定的类型。
答案 1 :(得分:1)
没有错误,因为data
被声明为类型any
。 any
类型的值可以在任何地方使用而不会出现错误,因为这是any
类型的工作。
答案 2 :(得分:-1)
如果__iter__). So, you can do the exact same trick to get at the iterator, and to
的签名来自类型 instance:A ,那么您不能将ref.__reduce__()[1][0] is seq
传递给它,则应该传递validate
代替。