Home > front end >  How change object property value typescript?
How change object property value typescript?

Time:05-21

interface State {
    customerId: number,
    step: string
}

const data: State = {
    step: 'shipping',
    customerId: 123
}

const setData = (key: string, value: number) => {
    data[key] = value
}

setData('customerId', 555)

Im try change value of customerId but got error: No index signature with a parameter of type 'string' was found on type 'State'.

How i can set new value?

CodePudding user response:

You need to change the definition of setData to include a generic parameter K. K represents the key of State you are trying to modify. The type of value will be State[K]. This is how we can model a relation between the key and value parameter.

const setData = <K extends keyof State>(key: K, value: State[K]) => {
    data[key] = value
}

Playground

  • Related