更好地解释一下,例如我说:
class Model{
property1: number;
property2: number;
}
let model= new Model;
当我这样做时
model [“property1”] =“sdaef”//好!打字稿检查并知道它应该是数字并给出错误
var test = model.nonExistingProp //抛出错误,因为该属性不存在,这是好的
现在问题
var test = model["nonExistingProp"]; // NO ERRORS ??
我很想知道,因为知道字符串属性(关联数组)及其类型为什么不像前面的例子那样抛出错误并说出nonExistingProp是否足够聪明,有没有办法强制这种类型检查关联数组,因为它已经知道属性并检查了类型,如第一个例子??
由于
答案 0 :(得分:1)
TypeScript足够智能,但这是一项传统功能,当索引到对象时被用作绕过类型检查器的一种形式。
但是,如果您使用--noImplicitAny
(除了其他--strict
标志),您将获得更安全的检查,TypeScript将在该表达式上给出错误。
对于记录,团队在--strict
标志下放置的标志是团队认为可以为您提供更好的编辑体验的东西。错误检查。