我在"strict": true
中使用带有tsconfig.json
的Typescript。不幸的是,如果我这样做,我不会收到警告:
let x: any = { test: false }
let y = x.asdf // this is undefined, but I don't get a warning
这段代码实际上还是可以的,但是这个代码崩溃了:
let x: any = { test: false }
let y = x.asdf.jjj // TypeError: Cannot read property 'jjj' of undefined
如果财产可能未定义,是否有可能显示警告?我希望得到警告,以便我可以先查看该属性是否存在。
顺便说一句,配置有效,因为
let x = notDeclared
表示无法找到notDeclared
。
我需要这个吗?
更新
根据所有评论(感谢它),我必须更加具体。上面的代码只是一个例子,但在这些情况下我有这个问题,我真的不知道x
- 对象中的内容。例如:
let x = JSON.parse(...) // the result is any
然后我不能说,解析对象中有什么。我可以访问任何内容,而x.asdf
只是undefined
,x.asdf.jjj
会使整个应用程序崩溃。如果是短绒或某事,会很好的。像这样会警告我,如果我太傻了,不能看到这个问题;)
答案 0 :(得分:0)
不幸的是,如果我这样做,我不会收到警告
因为您使用了any
类型注释。 any
本质上可以切换许多编译时间检查,并且是开发人员告诉TypeScript编译器的方式我知道更好...不要为我检查。
删除any
注释:
let x = { test: false }
let y = x.asdf // ERROR
或使用正确的注释:
let x:{ test: boolean } = { test: false }
let y = x.asdf // ERROR
我真的不知道x-object中的内容
TypeScript也不是。 TypeScript只能真正防止编译时类型错误。您需要能够预先定义类型,以便让TypeScript检查它。