ts-get
Alternative to lodash.get
that makes it typed and cool as if optional chaining proposal is there.
Means you're not only safely navigate object, but you're also getting 100% autocomplete and type-safeness 🎉
Usage and examples
getemptyObject, it.optionalField, "default" // -> "default" getwithOneOptionalField, it.optionalField, "default" // -> "value" getwithOneOptionalField, it.nested.dangerousAccess, "default" // -> "default" getwithOneOptionalField, it.unknownField, "default" // -> Type error, `unknownField` doesn't exist on type getwithOneOptionalField, it.optionalField, 5 // -> Type error, third argument is not assignable to type `string`
lodash.get
behavior
Difference with - If your path gets
null
at the end, it will bail out todefaultValue
orundefined
. If you would like to getnull
returned anyway, just pass it as adefaultValue
Known issues/limitations:
- If your type field is of type
null
and onlynull
orundefined
your field will be of type{}[]
. I have no idea how to fix it 🤷♂️ PR Welcome 😇🙏
- If you return not a primitive but an object, all its nested fields will be
Required
e.g. allundefined
andnull
will be removed.
res // <== Will be inferred as { optional: string }, without null and ? (undefined) which is wrong, but seems to be impossible to infer.
You can solve this issue passing down generics implicitly
res // <== Will be inferred properly