use*_*016 122 object typescript
我试图从一个对象形成一个逗号分隔的字符串,
const data = {"Ticket-1.pdf":"8e6e8255-a6e9-4626-9606-4cd255055f71.pdf","Ticket-2.pdf":"106c3613-d976-4331-ab0c-d581576e7ca1.pdf"};
const values = Object.values(data).map(x => x.substr(0, x.length - 4));
const commaJoinedValues = values.join(',');
console.log(commaJoinedValues);
Run Code Online (Sandbox Code Playgroud)
如何使用TypeScript执行此操作?
获取错误文件:
severity: 'Error'
message: 'Property 'values' does not exist on type 'ObjectConstructor'.'
at: '216,27'
source: 'ts'
Run Code Online (Sandbox Code Playgroud)
Aar*_*all 198
Object.values()是ES2017的一部分,您得到的编译错误是因为您需要配置TS以使用ES2017库.您可能正在使用当前TS配置中的ES6或ES5库.
解决方案:使用es2017或es2017.object在--lib编译器选项中.
例如,使用tsconfig.json:
"compilerOptions": {
"lib": ["es2017", "dom"]
}
Run Code Online (Sandbox Code Playgroud)
请注意,以打字稿目标ES2017 并没有在浏览器ES2017发出polyfills,它给你,如果你想要做的是,在你的项目中自己.而且,由于Object.values尚未得到所有浏览器的良好支持,您肯定需要一个polyfill:Object.values将完成这项工作.
hol*_*ava 90
而是使用Object.keys.
const data = {
a: "first",
b: "second",
};
const values = Object.keys(data).map(key => data[key]);
const commaJoinedValues = values.join(",");
console.log(commaJoinedValues);
Run Code Online (Sandbox Code Playgroud)
mtp*_*ltz 17
如果由于某种原因无法在tsconfig中更新为ES7,则可以Object.values在TypeScript 中使用(<any>Object).values(data).
Luk*_*ius 12
我已经增加了tsconfig.json在TypeScript中启用此功能的目标
{
"compilerOptions": {
"target": "es2017",
......
}
}
Run Code Online (Sandbox Code Playgroud)
小智 11
代替
Object.values(myObject);
Run Code Online (Sandbox Code Playgroud)
使用
Object["values"](myObject);
Run Code Online (Sandbox Code Playgroud)
在您的示例中:
const values = Object["values"](data).map(x => x.substr(0, x.length - 4));
Run Code Online (Sandbox Code Playgroud)
这将隐藏ts编译器错误.
| 归档时间: |
|
| 查看次数: |
81536 次 |
| 最近记录: |