我刚刚使用TypeScript了几个星期,但是我发现它非常有趣!
应用于对象的接口是否也输入验证器?例如,如果我有联系表或API端点,并且声明了它产生的类型-e。 g。:
interface ContactFormData {
firstName: string,
lastName: string,
shoeSize: number,
favoriteBooks: Book[]
}
我知道它只能确保属性的类型,而不能防止XSS。
假设还可以“未定义”的对象的属性为空,是否还可以通过接口传递标准值?
答案 0 :(得分:2)
类型在运行时不存在,因此没有类型可以在运行时保护您的应用程序免受任何攻击。
以下面的代码为例。
const data = "" as any as ContactFormData;
data.favoriteBooks[0] // passes. but error at runtime
接下来是接口不是结构的“验证者”,Typescript在结构上是类型化的,这意味着应用程序中具有与ContactFormData相同结构的任何其他类型都可以分配给ContactFormData,类似地,任何超级类型也可以。一组ContactFormData可分配给ContactFormData。
任何来自API的类型本质上都是“任何”或“未知”,您可以尝试输入它,但实际上是一种错误的保护意识,因为如果API掉线,如果API在您之下更改,或者一个在许多其他方式中,可能会发生意外结果,然后您的应用程序将在运行时中断。