根据official documentation , typescript 是 javascript 的静态类型检查器。这些检查发生在编译时,即。 e.在程序执行之前。 Ts创作者也state它们不提供运行时类型信息或运行时类型检查。因此,在 ts 中创建了许多用于运行时数据验证的库:io-ts、joi、yup、zod 等,最佳实践似乎决定我们使用它们。
有人可以解释为什么运行时类型检查如此重要吗? 如果没有它,会发生什么样的错误? 你有一些实际的例子吗?
最佳答案
假设您有一个像 https://yesno.wtf/api 这样的 api ,它返回一个像这样的 json:
{
"answer": "no",
"forced": false,
"image": "https://yesno.wtf/assets/no/20-56c4b19517aa69c8f7081939198341a4.gif"
}
但您也可以这样输入:
type ResponseData = {
answer: number[],
forced: string,
image: boolean[]
}
TypeScript 会说它很好,但事实并非如此,当你尝试执行类似操作时,它会在运行时抛出错误
image.map(() => /* */)
因为image
并不是真正的数组
关于javascript - 为什么运行时类型检查在 ts 中如此重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74733718/