Typescript 错误类型上没有编译错误

Typescript 错误类型上没有编译错误,typescript,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 val

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

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

如果
validate
的签名来自类型实例:a,则您不能将
实例.数据
传递给它,您应该将
实例
传递给它。

如果
validate
的签名来自类型实例:a,则您不能将
实例.数据
传递给它,您应该传递
实例

实例。数据
的类型为
any
,允许在需要任何类型的地方传递。如果需要编译错误,则需要为其指定更具体的类型。

实例。
数据属于
any
类型,允许在需要任何类型的地方传递。如果需要编译错误,则需要为其指定更具体的类型。

没有错误,因为
数据
声明为type
any
。类型
any
的值可以在任何地方使用而不会出错,因为这是
any
类型的工作。

没有错误,因为
数据
被声明为类型
any
any
类型的值可以在任何地方使用而不会出错,因为这是
any
类型的工作。

因为'data'是'any'类型,可能是validate()函数所期望的实例。
实例。data
any
类型
any
表示:不进行任何类型检查:我知道我在做什么。因为'data'是'any'类型,可能是validate()函数所期望的某个实例的实例?
实例。data
any
类型
any
的意思是:不要做任何类型检查:我知道我在做什么。他/她可以,这正是让他/她惊讶的。他/她可以,这正是让他/她惊讶的。看起来
any
的工作方式与我的想法相反<代码>静态验证(实例:A):布尔
需要类型A,因此我认为任何更一般的操作都会产生错误。可以使用什么其他类型来代替
任何
?您正在查找
{}
未知
。这些是最通用的类型,而
any
是一种绕过类型检查的特殊类型。看起来
any
的工作方式与我的想法相反<代码>静态验证(实例:A):布尔
需要类型A,因此我认为任何更一般的操作都会产生错误。可以使用什么其他类型来代替
任何
?您正在查找
{}
未知
。这些是最通用的类型,而
any
是一种特殊类型,可以绕过类型检查。