如何将带连字符的属性添加到声明为any的Typescript对象

时间:2019-03-14 15:01:18

标签: typescript

我有一个声明为任何类型的打字稿对象。 现在,我需要在这些对象的实例之后添加一个字段。 我知道我可以做到

myObject.myProperty = 'true';

但是不幸的是,我需要添加的属性包含连字符,所以这是不可能的。

我尝试过:

myObject['my-property'] = 'true';

Object.defineProperty(body,'my-property','true');

但是他们两个都失败了。 有没有办法在打字稿上做到这一点(无需序列化为原始字符串或json)?

1 个答案:

答案 0 :(得分:0)

我建议使用来映射类型。 &运算符

let fn = (anyItem: { myProperty: string } & { [key: string]: any }) => {
  anyItem.myProperty // string
  anyItem.otherProperty // any
}

{ [key: string]: any }表示此类型的任何键都将返回any,但与{ myProperty: string }合并后将在myProperty键上正常运行

Playground