Typescript 为什么存储的索引getter像getItem一样返回“any”而不是“string | null”

Typescript 为什么存储的索引getter像getItem一样返回“any”而不是“string | null”,typescript,Typescript,我一直在将一个项目移植到TypeScript,发现了一些奇怪的事情 web浏览器使用存储对象存储会话数据。它有一个使用索引方法的方便的getter/setter。例如,localStorage[username]检索该密钥 我的问题是,为什么它的语法是: [名称:字符串]:任意 而不是 [名称:字符串]:字符串|空 喜欢这个方法吗 出现这种情况的原因是,我希望得到警告来处理null情况,但由于它是以any的形式出现的,VSCode不会给出警告 谢谢 索引器之所以是[name:string]:an

我一直在将一个项目移植到TypeScript,发现了一些奇怪的事情

web浏览器使用存储对象存储会话数据。它有一个使用索引方法的方便的getter/setter。例如,localStorage[username]检索该密钥

我的问题是,为什么它的语法是:

[名称:字符串]:任意

而不是

[名称:字符串]:字符串|空

喜欢这个方法吗

出现这种情况的原因是,我希望得到警告来处理null情况,但由于它是以any的形式出现的,VSCode不会给出警告

谢谢

索引器之所以是[name:string]:any是因为在某些情况下它不返回字符串或null,例如['clear']实际上是一个方法

索引器必须与所有其他成员兼容,并且存储有一些方法以及您的数据

如果使用getItem检索数据,则类型为string | null,正如预期的那样。

索引器之所以为[name:string]:any,是因为在某些情况下它不返回字符串或null,例如['clear']实际上是一个方法

索引器必须与所有其他成员兼容,并且存储有一些方法以及您的数据


如果使用getItem检索数据,则类型为string | null,如预期。

太好了,谢谢!有没有一种方法可以让他们重新定义它,这样索引器就可以排除像clean这样的方法呢?目前还没有一种功能可以允许clean这样的方法。。。有一些肮脏的方法可以做到这一点链接中的例子是一个类似的问题类,而不是完全相同的:太好了,谢谢!有没有一种方法可以让他们重新定义它,这样索引器就可以排除像clean这样的方法呢?目前还没有一种功能可以允许clean这样的方法。。。有一些肮脏的方法可以做到这一点链接中的示例是一个类似的问题类别,但不完全相同: