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
类型,允许在需要任何类型的地方传递。如果需要编译错误,则需要为其指定更具体的类型。没有错误,因为数据
声明为typeany
。类型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
是一种特殊类型,可以绕过类型检查。