4 ms·
yes, input is a json of some kind. You could say technically could be simply { "Unsubscribe__c": false } or even {} both of which are silly in my case because
by 9034725985 4y ago
yes, input is a json of some kind.
You could say technically could be simply { "Unsubscribe__c": false } or even {} both of which are silly in my case because there is no key for me to identify who the person is but they are valid inputs.
Or the test case I have is https://github.com/kusl/salesforcecontactmapper/blob/eff0b3eba893d562a002b9d85931524954de8171/test/input.json#L16 https://github.com/kusl/salesforcecontactmapper/blob/eff0b3e...
Or the input could have a thousand key values and I only care about some of them. What should my object look like? How do I create a class that says everything that ends in "__c" is something I care about? I tried unknown. I tried Object. How do I fix this (and learn something so I fix all future code I write)?
- wizofaus 4y agoWhat's wrong with Object?
- 9034725985 4y agoIf I set input as Object, if (input[prefCode] !== null) { currentValue = input[prefCode].toString(); } in the lines above, I see a red underline under input[prefCode] > Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Object'. No index signature with a parameter of type 'string' was found on type 'Object'.ts(7053)
- wizofaus 4y agoCould you use a helper like function getProperty<T, K extends keyof T>(o: T, propertyName: K): T[K] { return o[propertyName]; } ?
- erur 4y agoYou can go incredibly far with the type system. If you wanna go down that rabbit hole, I'd suggest Typescript type challenges. Completely blew my mind when I came across it the first time. When you start out with typescript you might think Omit<> and Partial<> are cool but holy hell, you can do so much more.
- sarahdellysse 4y agoinput: Record<string, unknown>
- deleted 4y ago[deleted]
- 9034725985 4y agoThank you. That gives me a red underline under ContactId and Email now. I think because input.Contact__c and input.ContactEmail__c are unknown. I think this is the right direction. What is my next step? const myOutput: Output = { ContactId: input.Contact__c, Email: input.ContactEmail__c, IsInternalUpdate: true, Preferences: mypreferences } (property) Output.ContactId: string Type 'unknown' is not assignable to type 'string'.ts(2322) Output.ts(4, 5): The expected type comes from property 'ContactId' which is declared here on type 'Output'