var testObj = {};
const typeTest3 = Object.values(testObj);
Why is typeTest3
's type unknown[]
while Object.keys({})
's type is string[]
?
CodePudding user response:
Because it produces an array that iterates over the values, which aren't guaranteed to have any specific type. Object.values
has 1 generic type parameter though, so you can type the produced values yourself:
Object.values<number>({a: 5, b: 3}).map(x => x 3)
The type of x
will be number
instead of unknown
.
(PS: Object.keys
produces strings because in JavaScript all object keys are coerced into a string)