javascript – 为什么数组中的索引在TypeScript中打破了类型的安全性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 为什么数组中的索引在TypeScript中打破了类型的安全性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1662字,纯文字阅读大概需要3分钟。
内容图文
向JavaScript添加静态类型的重点是提供有关类型安全性的一些保证.我注意到数组索引似乎打破了类型安全性而没有使用像任何或非null断言运算符那样的任何脏技巧.
let a: Array<number> = [1,2,3,4];
let b: number = a[4]; //undefined
此代码不会导致任何TypeScript错误,即使很明显它会违反类型安全性.在我看来,阵列的类型< T>由index []操作的应该是类型T |未定义,但TypeScript编译器将其视为类型T.
经过进一步调查,我发现这种行为也适用于在对象上使用索引运算符.在任何情况下,索引运算符似乎都不是类型安全的.
class Example {
property: string;
}
let c: Example = { property: "example string" }
let d: string = c["Not a property name"]; //undefined
在具有任意键的对象上使用索引运算符返回类型any,可以将其分配给任何类型而不会导致类型错误.但是,这可以通过使用–noImplicitAny编译器选项来解决.
我的问题是为什么像数组上的索引那样基本的东西打破了类型安全?这是TypeScript的设计约束,疏忽还是故意的一部分?
解决方法:
Use of the index operator on an object with arbitrary key returns type any, which can be assigned to any type without causing type errors. However, this can be resolved by using the –noImplicitAny compiler option.
是.如果您关心严格的安全,请使用noImplicitAny.同样严格:true(strictNullChecks以及其他).
My question is why does something as basic as indexing on an array break type safety? Is this a design constraint, an oversight, or a deliberate part of TypeScript?
有安全水平.严格是最强的.您可以选择对代码的严格程度.
更多
从https://basarat.gitbooks.io/typescript/content/docs/options/intro.html起
That said, traditionally programming languages have a hard boundary between what is and isn’t allowed by the type system. TypeScript is different in that it gives you control on where you put the slider.
内容总结
以上是互联网集市为您收集整理的javascript – 为什么数组中的索引在TypeScript中打破了类型的安全性?全部内容,希望文章能够帮你解决javascript – 为什么数组中的索引在TypeScript中打破了类型的安全性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。