Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

populate object properties using lambda expression in typescript

Newbie Alert! I feel silly asking this question but I need someone to teach me the correct syntax.

I have code that looks like this:

let thing: INewThing;
thing.personId = another.personId;
thing.address = another.work.address;
thing.greades = another.subjectInfo.grades;
thing.isCurrent = another.student.isCurrent;

I know it can be written cleaner. I want to use a lamda expression, something like this:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

let thing: INewThing => {
    personId = another.personId,
    address = another.work.address,
    grades = another.subjectInfo.grades,
    isCurrent = another.student.isCurrent
} as IThingUpdate;

I have looked and looked for an example. I have yet to find one that works for me. It’s just syntax but no matter what I try it doesn’t work.

>Solution :

You’re just looking to create a new object, which is a pretty different thing from a "lambda" (function). Just declare the object. You don’t need a function.

const thing = {
  personId: another.personId,
  address: another.work.address,
  // use the correct spelling below - no 'greades'
  grades: another.subjectInfo.grades,
  isCurrent: another.student.isCurrent,
};

If the another is typed properly, that should be sufficient.

If the another object had more properties using the same path, another option would be to destructure those properties out, then declare the object with shorthand, eg:

const originalObj = { prop: 'val', nested: { foo: 'foo', bar: 'bar', unwanted: 'unwanted' } };
const { foo, bar } = originalObj.nested;
const thing = { foo, bar };

Destructuring like this, without putting the values into differently-named properties, helps reduce typos – if a property starts out, for example, as someLongPropertyName, putting it into a standalone identifier someLongPropertyName and then constructing an object with shorthand syntax ensures that the new object also has the exact property name someLongPropertyName (and not, for example, someLongPRopertyName – which isn’t that uncommon of a mistake when using the more traditional object declaration format).

But since all the paths in your another object are different, this approach wouldn’t work well in this particular situation.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading