如何使TypeScript的静态类型在运行时工作

时间:2017-05-05 12:28:14

标签: javascript node.js typescript

function multiply(num: number): number {
  console.log(num * 10) // NaN
  return num * 10
}

multiply("not-a-number") // result == NaN

如果我试图通过硬编码无效参数类型来调用上述函数,那么Typescript会抱怨。这是预期的。

当动态传递参数时,我期待同样的事情。

const valueFromDifferentSource = "not-a-number"
multiply(valueFromDifferentSource) // result == NaN

而不是破坏代码。 Javascript继续执行代码并返回“Not-a-Number”NaN。

如何在运行时获取打字稿的静态类型?

2 个答案:

答案 0 :(得分:2)

确保valueFromDifferentSource也有输入:

const valueFromDifferentSource: number = "not-a-number"

TypeScript在运行时不执行任何操作。它将TypeScript编译为纯Javascript,并且在允许运行时检查的样板代码中添加任何内容。

答案 1 :(得分:0)

Typescript与运行时无关。但是有一个很好的库来控制变量类型https://github.com/hapijs/joi。您通常要做的是验证应用程序的所有输入数据(http请求,来自其他服务的响应,队列消息)。在编写代码的阶段内部进行此类验证和静态类型,应该可以满足您的需求并提高代码质量。