Devin Rhode

Results 293 comments of Devin Rhode

I'm using this, I suggest others try it out and if there are no issues, we merge this baby :) ```ts export const hasOwn = ( record: Readonly, key: string,...

hmm... not working in the [one case I'd like it to work](https://www.typescriptlang.org/play?noUncheckedIndexedAccess=true&noUnusedLocals=true&noUnusedParameters=true&exactOptionalPropertyTypes=true&noImplicitOverride=true&noPropertyAccessFromIndexSignature=true&noFallthroughCasesInSwitch=true&ssl=35&ssc=1&pln=26&pc=1#code/KYDwDg9gTgLgBDAnmYcCSBnAogRwK4CGANgDwAqANHAKoB8cAvAFACQAFCQOK1sCUj9TnFAxgAOwAmGOGTgB+OAEY4ALjgAmfiPFTWHbnwFwh2ydOrylqjb1YsFMKHmB21AM2IZgAbiZMJwADGRARQqG54YoEwAJYQYnAEGF6w5MIgomYITsA8vGoAbhAxEr5MAPSVVdU1tXX1DY1NzZV+oJCwCMioAMrAMABKwPgxYRIkAEJJwGTdVADSwIjSplJwANZLEG5wU16zKPQMcExwZ7vTB6gAZKfnAPIAtjEwk5dzcIvL9LfncEMjMYkAAKMUC6ze+w+XwwtFoZRiYlEUA8gVQ9wARgArIIwADC8Qwjjw0WgcAA3nczgALJL3ADuYkhM2hS3SmTWm0Q2wuUMObDCgWgEjUexZKCoXLUX3ycEFwrgMWkfUGwzwo2A4zFVwWS1oVLgtIwDKZX3ZOmkwKgEBQsEQXx48qgIrgEGxuMlS2lS1lTokiuk5LgAG15oqEl8ALpqSLrMQQRlwAC+TBT-iCITCcAKoTgmJx0TU+dxBLERKcpKgZRaNdrdfrNT8RH6cogzcYcAA5AQpG5O0whWX4NbmxhS0SO5S-t2JM8xJ21DO552KAbO3gUguuxvgFB+0nEtJB0SmDEdmwAITF6IAOiNJoFbeAY8JMCoI+AvH4U-OMGp1vpOAxGAQCsCga0oDYTtqDEOMEwSD9FzgABqVtm1sFMPzgSo4B6akIDwIh-XjeAMVQAADctEQAc3IipykPFJXkwXBCFIJAUB5D9PW5HYOOALinxfIc4T4PwmHaaB4AiKJYniBBnxgAB9REAhATU2DdLE1CDYMpTgK0bV3JAozUKixGo5NvwNM84DYa8YDvOlGU07EqAAIjcCAIHcr8KQNP4kiYkgWPwYgSHM6iqH4nktJvLyIFE2w-hTNNJM6GTojiBJRCJJStNxVztNdd1omsv5bPs0rHPvFytI8hLfPKv5ziC4yQuwMLSFjeNGWi7pYuxeLvKSg1UracApLgTK5JyxT8rAWbiCKnTpu8uQ1DEPBHjIqArP8irzwcpzjTqty4E87ymoOlqzja1JQrYkgtp23d+s4nY4oS0aUtTCaOmkyIsvk3LlLCQENK01aEs27bdv2n8zkq47arEIqGquvzEZa+7mM6p6Xt296BM+obvryMa-okyaMqB2aFLyhyVrzarmqRo7qpOh96ouxqsYC1rknax7wp6+DicGrFhsSinfrTRFkVRVBQaUtAkV3JWKTWiANrgSLk2pgHprp7KGeUhWNYINFmZVtXFatz8bvZuyUectGecunz+duu6hYe-HwsiiXSal8mxLlvxgiCs2lLxEJki1hLdf1lN0sB2TTZVqPkht+a46CtnFQ5gsard9HecxwvAr9vHWMDxwaODkrQ5G2XznGw2ppmzP5sibLmaDGG9YbizkzgAAfLWMVCMyR8spNC+RznUfLz3rux6vgpF0gg66D7m+ln726ptPjYzkH5otqAvGB93sWh7zVunqBZ6gGix4Pa5E8fqeCAAL1hq9PaB4F5OyLi7ZeZcPZ8yroLLeAdSBBmfq-d+n9f4AKAnDXcyYm5fVbuHY+aUabp1vjHP0zMhhCmdBFOeVBIq0EXsXXEXMzpYgxl7WBvt4F1x3rQveJMD5h2SoQ-6XcTYXzyn3eISkYAEGotRSG98tYEBQRZKgGJVHzwnlrQImiqAuhTowiBJcWF3zYRdAg68BZcOFggmhb81H8MljeDER8zgd1Pt3CRylnjJBokpLkA9taaIRjZJht4V4e2flYn2jFbE8JIGLPqTiQ4uNCG4g2SYgA) ```ts let role = 'adsf' as string const rolesConst = { 'admin': 'admin', 'user': 'user' } as const...

It's a String coming over the wire, so neither of those options work :( The goal is to verify the given role is known, to act as a type guard,...

Maybe the fp-ts version should require the object to look like a const (have "readonly" modifiers) And it doesn't look like a const, recommend using your version? How could we...

Actually, as strange as it is, I am actually going to tweak the `fp-ts` type a little, for `key` I am going to accept `any`. Because, in my case, a...

This allows me to both cleanup type-guards before calling `hasOwn` (I don't need to ensure it's a `'string'` type) and encourages callers to just pass in `any`thing. Because `any` _nonsense_...

When I'm passing a parameter into this util, the type is `unknown`, I find it's actually useful since it's data coming over the wire, I the type actually is unknown...

Just for good measure, I really just copied source from fp-ts project. Actually the type guard there was originally implemented in this PR: https://github.com/gcanti/fp-ts/pull/1075 by @gcanti As such I think...

@jamiebuilds is there a better way to write the code snippet I provided? 1. Given a list of known good user roles (const array/object/enum: `rolesConst`) 2. Check if an unknown...

@nicolas377 [doesn't pass as many test cases as my last example](https://www.typescriptlang.org/play?noUncheckedIndexedAccess=true&noUnusedLocals=true&noUnusedParameters=true&exactOptionalPropertyTypes=true&noImplicitOverride=true&noPropertyAccessFromIndexSignature=true&noFallthroughCasesInSwitch=true#code/PTAEAsBdIBwZwFwgOYEtLgK4CMB0BjAewFthjV8AnQuQgM0mABUBPGAUwGUrUZHU4cTOzjAALGIBMAVgDMAKHnsAHjEKVIoSG3agAknACiAR0wBDADYAeADLsGAGlAAlVMigA+UAF55ASAAKKwBxDwCASh8vYNAVSHYAOwATOFA7BlAAflAARlAEUElIuMSU-yDQiKjQGJLk1Nd3TWy8gqL-P2zISmEOgrpLOHYAbkU6TAT8SFRCBNAzQXYNK3lQUCZY5Xj6rR72VdAQUE5UC0T8XQB3M0oE1ATkAuIzAGtdTCHQenWEeTDwgobADeoEo7EgmFuoAmSXs93YSXmqQmLwShEucwW61AAF9RvIQISicSSaSyeSKZSqYTFCo1BotDpjuDnOxTKgwUkVmsAEILdisDgOA4AaXYLFSdRSoDeLG+fKGgv2Xm8oAOvP5StAADJ1aAAPLkSBWBUCnROMUSry6tZrVnszlWAAKFBeJs15tAlrgHg8+Pu8UoAwuBuwACt2FMAMKzODdTBTdSgIEHI4AMWoxFAAAFYQA3e6UcCEWGSebJL4YJZwVNgcALfUY7mHMAaxXm2u2y2bbbS2Xyj0cTthTtrMFEShJAqmpXCtZHNaygqWzsA0GR9SIgTMyD2zAchHNhegGcd+etr3i4ejc8QBtN0eXlg90qpJ3UDgaFgr28j29jjdJwKQhw0jSA5xbW0lyfVcCnHTdQG3FN-1AABtEVELmS0AF0ChRNEMRvSC8UUW86EzHM7iICwFlkAB2Oi1XnAAqZj1WY0AABFwSWcgEhEUBLnAcFhMocsvlAqY71SMxQBgD8lm0QT0HALRhNAOAOHwVA6FQBFQASMxiHYXB2JzGAbiMr5QAAQTmECIymUzbQ47MLMoKy81suSFK-AyjJM9jgAOes4EbBIrA2KU3187RLT-W1CAKVkzCSWYLBYKxWQnLkmCcfD0QSX0ILWPM8ISVFCoONcvO3JgiNC8KAiSiTHPA0AytAd9CE-OLxTXbBCEIM4zASfFbwzEhQDoGAAFpIFSCxUGwDzKBYX5b0ajEAH0Zu2hassApJvRfHZut679xQS494KAlx2FS9LMuyzdDpy718oqgiio8CDj2ggqMVgmVxUQhoju9UYcUUWF8BosEOpuUM2oKfVJMgGMEjjHpE0ofFqQJwmieJ4lFCOIgsc0BywLyVUU2PeSeoKAByFQBAW5mCTAHEkVACm43xsBmcZmBmZ8bxVVZ5R2bgTmudAZnIEIThunuZAxe8LwBgsIZ5eZmFI3hhFzsUlgADVLGEDWtcGfYjiBHnNem235dQ7Dqm13WlFUdRNHGSZplmLQREgbb+cgKpkL52MqfDHxkz1AAiOghsTgpk6G7a80t9hE5K0BE+wG404LovKCznO84OHmsXD0jQDOTRZUm4hOCWPMlnjjPCET3nsbVg4dNAAI0ba3AtoSZrwycZvMzbygO8ocJIijtYFiGZY9TWAwTHMaxu97gAfUvi6cbQOG+WeSHnxePD1f4iOhwe6GH0ewPH+9J4cpxE6VlXKDVonZeCdbRIg3saLe+gjCmEsFYfii8z46G+A5O+oCH7V3rkPEe6MP5hQxFPMMP8DZwxuMbWK5tK7ANXmAxSzZQE7xgdYQGCREEXxfg5XAxCjZJBNl+C2FhhCoNtOgtY0M1gHHDneScMZYTHVBqqA+vM65rCwW-JyE8CFOHrNIksCJLRUL1OvWhkCGF7ysN3CuAjc6sPYMg8MqFtFJBkXo8U2EhFrBEbaIxm9QHb2gWYix2crF50ZGw1qqEAAGAASIEjjnFyJYDiCJbj74REfvIJ+dJfbTQmFMGYcx4hxm2vcWEygEQBAOA5AoIJULQV4X1FguENKqweLieQK8JEx1BMNXQCiU492fq-HBGjv7dLOAY0B3iIG+KgbvWB-cHg2LsWGXA-T3GgE8dDTJPsGT+zyUHQpocwSPQSBlYpyQVDlMqeGap64TkZTQnU8hOECgLOQG0jpaxJHUDOF3fpidBnYLHiM6eYz2ATK8YsHxvjTHzJacgJZ7DwyrKGuszZGTaQ7L9rkwOBSQ7bRepOCpawqn3Rys6Z54onBvLvp86OlMwV-NToCtRkBcFNVGT88FdK15QumTC-xcKAGLNCbYpFKy1mpPCOk7Z9JsUB3ycHIpKU0qnJYISpIxLWrJQeqqjKb1Xr1Muiwal8LfTtJAfSuMjK+nMpUS-IF78QWELBRC3l4C6G2lhdYN5iLWoosIGitJGDZXZL2bipVodqZTC1aS6NkALVR2+T0plAz7VDOBZ-TRrqeU0OhfQwVTCvqFT9RwyVaDg2iIxd7OVOSFUHPxay2NNzkZgUTZ0hlXLU0AvTY69RWbOU9LdXm-lBa5lFsqhiUtyLy3CMrW00NuycWKsOdtHquLLDNrDLc-pmQCgJEwMQbAndoZ0uTb821abEIOtZey-Bg7xm5qmZ6vx464GHuPZQadErUVSplZi2t4aV34rBA6K5JKW0gn6fuj9J721fK6V2y9Pbr0ZqdQO0FXLh3PpMYW99R6ljfoDUG6VIbFABiWMGXQq69AJEDFRy1u7XnwqhjWsNy6G1FIo0GMwFwt0FBo3RyjvH9hnsQym5DLLhkYZdVhp9fKX2zMYVYX1orlnEb-WR+QJDBCRu2lGGiumo5MeacK5ArGslLvrXiopOm4AEIE-igz68xOdokwXf5UnM14K-phod8mPW4bfap8+Yr-Wzo8fOrZAH2PWb0xMfJ-HkzTSGsxszuJQDHxBGXNLasPmWvPb0jzdrUN9rZc6pwcnLXuuMTM71Kn4VEYixsqL1bLPyv2TZ0O3GhidaS3qKDqXks5dM3lnmPMbS2kGy1bLZgABeMGCNiXG-Bq1mgkPFavao6TPns1VeoThureHIFrFm5QXLrSJsneG-Nxbn7cT51AaF9T-TIEkf-WxqznW9O3U1dc7dZLXqqZpatwr3avPod2w+7l1WR2KfqyFpB4qNMVtI1WxdHWI2roS7MfaZhkDIHA9qvUWX5gXfM6AbA5O2mgNJ-gcnwxQBTlG5d0H4mL0FzMCh7b3mOV+cfbDw7ArguNbU8j7A72tPtbrd91d5BBBq22rKJL03qenoK+zorhdi4Q-7VD-nMODsKaC8p5hRGy6S-R-IIAA) But, idk how valuable these test cases are, it's been a minute, and I didn't originally write them. Regardless,...