2017-03-31 120 views
1

我一直在想轉換一個JavaScript的Web表格打字稿提取對象的值,並且已經無法工作,如何處理以下(在JavaScript的工作):無法在打字稿

let fieldValues = JSON.parse(cookieData); 

let keys = Object.keys(fieldValues); 

let values = Object.values(fieldValues); 

Visual Studio告訴我:

錯誤TS2339屬性「值」在類型 'ObjectConstructor'上不存在。

我該怎麼辦?

回答

4

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]); 

如果你真的想使用此功能,你需要添加你的tsconfig.json"es2017.object"庫。確保你使用的是polyfill,或者如果你的最終平臺支持這個功能。

+0

謝謝你讓我知道這件事。我不知道Object.values不穩定。 –

+0

我很樂意幫助你:) – Diullei

+0

該規範是穩定的,冷凍,承諾(階段4);它只是到處都沒有實現,當然可能永遠不會在IE等人。請參閱https://github.com/tc39/proposal-object-values-entries。 –

4

如果Object.values不支持(which today is often the case),你可以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']

0

就像一個替代方案。您也可以使用Object.getOwnPropertyNames()

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