无法在Typescript中提取对象值

Dav*_*and 1 javascript typescript

我一直在尝试将JavaScript Web表单转换为Typescript,并且无法解决如何处理以下问题(适用于JavaScript):

let fieldValues = JSON.parse(cookieData);

let keys = Object.keys(fieldValues);

let values = Object.values(fieldValues);
Run Code Online (Sandbox Code Playgroud)

Visual Studio告诉我:

错误TS2339"ObjectConstructor"类型中不存在属性"值".

我能做什么?

小智 11

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

Object(nameofobj)["nameofthekey"]
Run Code Online (Sandbox Code Playgroud)


Diu*_*lei 8

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

map改为使用:

let values = Object.keys(fieldValues).map(key => fieldValues[key]);
Run Code Online (Sandbox Code Playgroud)

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


gyr*_*yre 6

如果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']
Run Code Online (Sandbox Code Playgroud)