Typ*_*aon 5 iterable typescript
第一次尝试打字稿。
我有一个看起来像的物体
interface Job {
//... some data
priority: number
}
Run Code Online (Sandbox Code Playgroud)
我想返回一组作业中的最高优先级(注意:不是作业本身,而是实际值)。所以很自然地我就尝试了:
// let jobs: Set<Job> = fetchJobs();
jobs.map((job) => job.priority).max()
// or
jobs.values().map((job) => job.priority).max()
Run Code Online (Sandbox Code Playgroud)
但它告诉我Uncaught TypeError: jobs.map is not a function
Set对象没有map()方法,因此出现错误也就不足为奇了。您可能会考虑对象上的方法map()。A不是 an ,尽管两者都是可迭代的。幸运的是,您可以通过多种方式将任何 iterable 转换为 an :ArraySetArrayArray
您可以将其传递给静态Array.from()方法:
const jobArray = Array.from(jobs); // Job[]
Run Code Online (Sandbox Code Playgroud)
或者您可以将其扩展为数组文字:
const jobArray = [...jobs]; // Job[]
Run Code Online (Sandbox Code Playgroud)
请注意,avalues()的方法Set生成的迭代器与将 the 视为迭代器时使用的迭代器完全相同Set,因此虽然您可以使用它,但没有必要:
const jobArray = Array.from(jobs.values()); // same thing
const jobArray = [...jobs.values()]; // also same thing
Run Code Online (Sandbox Code Playgroud)
将 转换Set为 an后,Array您可以使用map()并根据需要处理结果:
const max = Math.max(...jobArray.map(j => j.priority)); // number
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2915 次 |
| 最近记录: |