TS代码:
function f(val1:number) {
console.log(val1);
}
JS代码,编译后:
function f(val1) {
console.log(val1);
}
即使从ts转换为js后,还有什么方法可以保持类型安全?
答案 0 :(得分:2)
编译为JS后无法保留类型。 JS没有静态类型的概念。 Typescript是一个静态类型检查器,输出是纯JS。因此,编译后没有任何类型可以持久。
如果您使用TS编写应用程序,则编译器将验证您正在执行的操作是否是类型安全的,因此在运行时一切正常。 (尽管即使在TS代码中,您也可以使用any
和类型断言来破坏类型安全并做不安全的事情)
答案 1 :(得分:0)
JavaScript是一种动态类型的语言。它将根据需要转换类型-请参见type coercion。
如果您确实要确保函数中使用了某种类型,则必须在代码中进行检查。
例如:
function f(val1) {
if (typeof val1 !== "number") {
throw new Error("not a number");
}
console.log(val1);
}
请记住,这只是一个例子。
如果您尝试将var x = new Number(42)
传递给函数,则由于typeof x
为object
,它仍然会引发错误。
因此,在进行此类检查时,您需要格外小心。