首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript hasOwnProperty等效项

TypeScript hasOwnProperty等效项
EN

Stack Overflow用户
提问于 2016-02-29 12:12:28
回答 3查看 40.8K关注 0票数 21

在JavaScript中,如果我想遍历一个字典并设置另一个字典的属性,我会使用如下代码:

代码语言:javascript
复制
for (let key in dict) {
  if (obj.hasOwnProperty(key)) {
    obj[key] = dict[key];
  }
}

如果obj是一个TypeScript对象(一个类的实例),有没有办法执行同样的操作?

EN

回答 3

Stack Overflow用户

发布于 2016-02-29 12:25:14

如果

是一个TypeScript对象(一个类的实例),有没有办法执行同样的操作?

您的JavaScript是有效的TypeScript (more)。因此,您可以使用与实际相同的代码。

下面是一个示例:

代码语言:javascript
复制
class Foo{
    foo = 123
}

const dict = new Foo();
const obj = {} as Foo;

for (let key in dict) {
  if (obj.hasOwnProperty(key)) {
    obj[key] = dict[key];
  }
}

注意:即使是JavaScript,我也推荐使用Object.keys(obj).forEach(k=>,但这不是您在这里要问的问题。

票数 28
EN

Stack Overflow用户

发布于 2019-04-26 01:36:58

你或许可以直接使用ECMAScript 6Object.assign(obj, dict);

我想到了TypeScript's spread operator,但我不认为它适用,因为它用于创建新对象,您希望覆盖现有类中的属性。

需要注意的是,它只是一个浅拷贝,它将调用目标类中的setter(如果存在)。

票数 0
EN

Stack Overflow用户

发布于 2022-02-11 00:42:18

我发现fp-ts has函数最适合我的用例:

代码语言:javascript
复制
const role = 'mother' as string
const rolesConst = {
  mother: 'mother',
  father: 'father'
} as const
if (has(role, rolesConst)) {
  // role's type is 'mother' | 'father'
}

https://gcanti.github.io/fp-ts/modules/ReadonlyRecord.ts.html#has

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35691858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档