【问题标题】:How can I use DOMStringMap in TypeScript?如何在 TypeScript 中使用 DOMStringMap?
【发布时间】:2014-04-29 10:12:29
【问题描述】:

假设我有一个函数:

angular.forEach(myElements, function prepareElements(myEl: HTMLElement, index) {
    myEl.dataset.myProperty = "whatever";
})

我遇到的问题是 error TS2094: The property 'myProperty' does not exist on value of type 'DOMStringMap'

我不太明白lib.d.ts中的interface

interface DOMStringMap {
}
declare var DOMStringMap: {
    prototype: DOMStringMap;
    new (): DOMStringMap;
}

以后……

interface HTMLElement {
    dataset: DOMStringMap;
    hidden: boolean;
    msGetInputContext(): MSInputMethodContext;
}

是我自己还是有点不清楚?

我尝试投射它<DOMStringMap>myEl.dataset.myProperty = "whatever",但什么也没做...

【问题讨论】:

    标签: html angularjs typescript


    【解决方案1】:

    您也可以将其转换为用户定义的类型

    type IType = {myProperty: string}
    ....
    (myEl.dataset) as IType.myProperty = "whatever";
    

    【讨论】:

      【解决方案2】:

      DOMStringMap 接口为空,因为规范尚未最终确定:https://developer.mozilla.org/en/docs/Web/API/DOMStringMap

      与此同时,您可以简单地使用:myEl.dataset['myProperty'] = "whatever";

      【讨论】:

      • 该构造导致tslint 警告“不允许通过字符串文字访问对象”。 let p = "myProperty"; myEl.dataset[p] = "whatever" 有效,但是 eww...
      • @mjs 你可以设置 tslint 忽略该警告
      猜你喜欢
      • 1970-01-01
      • 2019-06-27
      • 2015-03-25
      • 2020-10-28
      • 2021-05-13
      • 2014-08-04
      • 2017-03-14
      • 2017-04-27
      • 2015-11-10
      相关资源
      最近更新 更多