How to get around property does not exist on 'Object' How to get around property does not exist on 'Object' typescript typescript

How to get around property does not exist on 'Object'


If you use the any type instead of Object, you can access any property without compile errors.

However, I would advise to create an interface that marks the possible properties for that object:

interface Options {  selector?: string  template?: string}

Since all of the fields use ?:, it means that they might or might not be there. So this works:

function doStuff(o: Options) {  //...}doStuff({}) // empty objectdoStuff({ selector: "foo" }) // just one of the possible propertiesdoStuff({ selector: "foo", template: "bar" }) // all props

If something comes from javascript, you can do something like this:

import isObject from 'lodash/isObject'const myOptions: Options = isObject(somethingFromJS) // if an object    ? (somethingFromJS as Options) // cast it    : {} // else create an empty objectdoStuff(myOptions) // this works now

Of course this solution only works as expected if you are only unsure about the presence of a property not of it's type.


If you don't want to change the type or create an interface, you can also use this syntax to access unknown properties:

selector ():string {    return this.options["selector"];}   template ():string {    return this.options["template"];}