typescript 无法在打字稿中提取对象值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/43147696/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 04:24:30  来源:igfitidea点击:

Unable to extract object values in Typescript

javascripttypescript

提问by David Carrick Sutherland

I have been trying to convert a JavaScript web form to Typescript, and have been unable to work out how to deal with the following (which works in JavaScript):

我一直在尝试将 JavaScript 网络表单转换为 Typescript,但一直无法解决以下问题(在 JavaScript 中有效):

let fieldValues = JSON.parse(cookieData);

let keys = Object.keys(fieldValues);

let values = Object.values(fieldValues);

Visual Studio tells me:

Visual Studio 告诉我:

Error TS2339 Property 'values' does not exist on type 'ObjectConstructor'.

错误 TS2339 类型“ObjectConstructor”上不存在属性“values”。

What can I do?

我能做什么?

回答by Diullei

The Object.values(..)is not stabilized, so it is unsupported in many browsers (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values)

Object.values(..)没有稳定,所以它不支持在许多浏览器(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values

Use mapinstead:

使用map来代替:

let values = Object.keys(fieldValues).map(key => fieldValues[key]);

If you really want to use this function you need to add the "es2017.object"lib on your tsconfig.json. Make sure you are using a polyfill or if your final platform support this feature.

如果你真的想使用这个功能,你需要"es2017.object"在你的tsconfig.json. 确保您使用的是 polyfill,或者您的最终平台是否支持此功能。

回答by gyre

If Object.valuesis not supported (which today is often the case), you can just mapover your keys:

如果Object.values不支持(今天经常是这种情况),你可以只map在你的keys

let cookieData = '{"key":"value"}'

let fieldValues = JSON.parse(cookieData)

let keys = Object.keys(fieldValues)

let values = keys.map(k => fieldValues[k])

console.log(keys) //=> ['key']
console.log(values) //=> ['value']

回答by Devashree

If you need the value of a specific key you can access it using the following method :

如果您需要特定键的值,您可以使用以下方法访问它:

Object(nameofobj)["nameofthekey"]

回答by stefku

Just as an alternative. You also could use Object.getOwnPropertyNames()

只是作为替代。你也可以使用Object.getOwnPropertyNames()

let obj = {...};
Object.getOwnPropertyNames(obj).forEach(key => {
    let value = obj[key];
});