错误类型上没有编译错误

时间:2018-08-20 20:50:37

标签: typescript

尽管定义了函数参数的类型,但是当我传递错误的类型时,编译器不会给我编译错误。

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))行是错误的,我希望编译器会出错,但编译正常。

3 个答案:

答案 0 :(得分:3)

instance.data的类型为any,允许将其传递给任何预期的类型。如果需要编译错误,则需要给它一个更特定的类型。

答案 1 :(得分:1)

没有错误,因为data被声明为类型anyany类型的值可以在任何地方使用而不会出现错误,因为这是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代替。