首页 > 解决方案 > 错误类型没有编译错误

问题描述

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

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))行是错误的,我预计会出现编译器错误,但它编译得很好。

标签: typescript

解决方案


instance.data是 type any,允许在需要任何类型的地方传递。如果你想要一个编译错误,你需要给它一个更具体的类型。


推荐阅读