javascript - 迭代 TypeScript 中的接口(interface)属性

标签 javascript typescript

我需要将接口(interface)属性映射到对象:

interface Activity {
  id: string,
  title: string,
  body: string,
  json: Object
}

我目前做的:

headers: Array<Object> = [
  { text: 'id', value: 'id' },
  { text: 'title', value: 'title' },
  { text: 'body', value: 'body' },
  { text: 'json', value: 'json' }
]

这变得非常重复。我想要的是这样的:

headers: Array<Object> = Activity.keys.map(key => {
  return { text: key, value: key }
})

最佳答案

你不能,接口(interface)只用于编译时间,因为 javascript 不支持它。

你可以做的是:

const Activity = {
    id: "",
    title: "",
    body: "",
    json: {}
}

type Activity = typeof Activity;
const headers: Array<Object> = Object.keys(Activity).map(key => {
    return { text: key, value: key }
});

( code in playground )

关于javascript - 迭代 TypeScript 中的接口(interface)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670705/

相关文章:

javascript - 如何在 Javascript 对象中使用 Unicode 字符串键?

javascript - 当 alpha 小于 1 时,HTML Canvas 不准确地设置像素颜色

compiler-construction - TypeScript 编译错误 TS5037 : Cannot compile external modules unless the '--module' flag is provided

javascript - 如何禁用图表 ChartJS 中的点击

javascript - Firebase Web Auth 在移动设备上不起作用?

javascript - 所有字谜 - 递归

javascript - PhpStorm:不同的导入路径

javascript - jQuery - 检测用户是否可以看到页面底部

typescript - 如何将 "TypeScript style"中的原型(prototype)函数添加到外部模块?

typescript - TSLint:未使用的 var 关键字