JavaScript可以轻松地使我们灵活地推我们想要更改的值。 但是如何在打字稿中阻止(抛出错误)它 为了澄清问题,也许我给你举个例子
let array: Array<string> = [];
array.push(5);
console.log(array);
当然,IDE会通知我5不是字符串,但它仍会编译并显示带有5的数组。如何防止出现这种情况,我的程序应停止将5推入数组的操作
答案 0 :(得分:0)
这是一个很好的问题!我首先要问为什么要在运行时进行此检查(如果您在编译时阻止它,并且所有代码都使用TypeScript键入,那么您可能不需要进行运行时检查)。
也就是说,您自己写这样的支票很容易:
function pushChecked(array: Array<string>, value: string): void {
if (typeof value !== 'string') {
throw TypeError('value has to be a string!')
}
array.push(value)
}
let array: Array<string> = []
pushChecked(array, '5') // OK
pushChecked(array, 5) // Error (both at compile time, and at runtime)
有很多库可以帮助您解决此问题(您正在寻找的称为“运行时类型声明”)。例如,请参见is,izzy或@sindresorhus/is。