ts踩坑(property) DanMu.enable: DAMNU_ENABLE 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能

5,622 阅读1分钟

(property) DanMu.enable: DAMNU_ENABLE 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "DAMNU_ENABLE"。 在类型 "DAMNU_ENABLE" 上找不到具有类型为 "string" 的参数的索引签名。ts(7053)(property) DanMu.enable: DAMNU_ENABLE 先上代码,我们要根据一个key获取一个对象的某个属性: var str:string='key1'; this.enable[str]=false;

在我们编写ts代码的时候会出现波浪线警告,鼠标移上去出现以下情况:

(property) DateHelper.prmimaryKey: string 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "{}"。 在类型 "{}" 上找不到具有类型为 "string" 的参数的索引签名。ts(7053) 速览问题 (Alt+F8) 没有可用的快速修复

方式1 (解除ts相关语法检测)

我们在项目中的tsconfig.json文件中添加:

"suppressImplicitAnyIndexErrors":true,

则不报警告了

方式2 (声明字段类型)

interface DAMNU_ENABLE {
    SYSETEM_INFO:boolean, //系统消息公告类
    ....
    [key: string]: boolean, // 字段扩展声明
}; 

[key: string]: boolean, // 字段扩展声明 声明之后可以用方括号的方式去对象里边的值

后端node同事告诉我的,亲测可用

##坑2 在ts中,声明window.xx总是报错,把window写成(window)就可以啦

jq报错

declare var $: any; 就好啦