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))
行是错误的,我预计会出现编译器错误,但它编译得很好。
解决方案
instance.data
是 type any
,允许在需要任何类型的地方传递。如果你想要一个编译错误,你需要给它一个更具体的类型。
推荐阅读
- laravel - 元素未更新
- javascript - 是否可以创建使用 WebAudio API 来分析在没有 MP3 文件的情况下在浏览器中播放的声音?
- python - 制作从 1 到数字 n 的所有大小 k 的组合
- gitlab - GitLab Markdown 中的 Markdown 选项卡
- javascript - Javascript可以写在.edge文件中吗?
- .net - “IdentityType”中的“名称”是什么(System.DirectoryServices.AccountManagement)
- java - 在 oracle maf 中 IDCS 登录后如何检查 Java 中的 HTTP Basic 用户身份验证?
- reactjs - 反应表单动态输入字段
- php - 使用 Symfony 4 和 Doctrine 2 实现存档表
- firebase - 使用 Firebase 凭据访问谷歌云存储