Pelle Wessman
Pelle Wessman
Just a note: As V8 – and thus Node.js, Chrome, Electron – has a generational garbage collection, data that survives to the older generation will get accumulated until the process...
Some additional ideas from [this other playground](https://www.typescriptlang.org/play?ts=4.1.0-dev.20201029#code/C4TwDgpgBAymA2BLYAeGUIA9gQHYBMBnKQ4AJ0VwHMAaKAEQ2zyJPMqoD4oBeAKCiC2FakxwFi6APzCOAbQC6UAFwCh6LONYBybVBmKVawRuYSoAAwAkAb0oAzCGSgAVAL636Hu7kfOAqm4W+lByLnQAdFFwSKj+dPScSqpCoTAKANx8fKCQUPYA9gW8sAjIKABEhQUAtABGAIZkFXQVNRWcOeDQMcgA8rgA6gVk+DAQYE0NwCMoLmIsxKQiXCW9qOFQbRUAPhUA+rsVW5xZudD+BBD2lBD4LgUAogC2YKAw7NRzC+bLHNw8Vw-VgAVyuN1wdxCFWOylcZ26UAAwg1nhB4CjCBAPisAIJkMgNEAoADSwKWnyoigBllsJLkAAYFN4UWBkA0kAAvCAoS74a63e5PV7vSmkuQARgUnE4QQReRRaIxDSxpJpZM0i1kohkivRmOxlPxhOJ6wGw1G40mhJmZDV3DhJPl0GqAGYSnrlaqqkV6k0OhkoAB6INQABCEAAxgU0cQfQUw-6unlqgBWD2o-UqnnxqCNZqnYOhiPR2NbaqJ5rJl1FABsGaVBsq1X2+YDRfDUZjEDjFaT53yRQALA2s97qm3CyHO6We+Wim3sgPPQb8AAFMgFMCEOY0mzGUJkyhQADWEBABXsQJVyMzXp5JKScJcchJCj4biyfEoODI9gakbQCSECNHUq5QPuqTxn6zRwn81BZKk1RwrgILPHUThZG42TTiW3aEHw077tOQh9mQcGUlkJGCMhUCoehmGEaG2HLne4GAiu2brpu26kiBDRgVxpx8EAA): ```typescript type UndefinedToEmptyString = T extends undefined ? "" : T; // This one can probably be done better type CamelCaseStringArray = `${K[0]}${Capitalize}`;...
`Trim` suggested for an intrinsic implementation here: https://github.com/microsoft/TypeScript/issues/41283
Even more ideas from [this updated playground](https://www.typescriptlang.org/play?ts=4.1.0-dev.20201029#code/C4TwDgpgBAymA2BLYBJAdgY3gVwCaLQHMARCJAW2QHsAnAHhiggA9gI1cBnKT4GgwgBooxJq3ZcefAQD4oAXgBQUFVP5ExbDt0YB+NQIDaAXSgAuZasYstkgOR2o+k+csrr47VAAGAEgDeBABmEDRQACoAvgHE0YFoIWEAqpHeTm5QABSwmhLcfv5RAcGhUABacSlpzuHCZcIAdE1wSMB0ScLEMqZmUGgQAG6lAJSuqlCGMMYA3IqKoJCwCMgMuV686kIia5IbsgoZexo2eTn6R4QuFuMettwOThM9GbenBSVhRf6xxQmlVY9DLUoE0Gi0Vh0RN0xqpJjM5gtoAApKgEVYnLwAQzQIBMnR23AuciU4wuLgxkj0Bg01ysBIm7z+n1SjSaHygSVMugySUMAAZTBTuNgOBAggQILhHuFzD4Al8fv4UWjIV1UjCVA5ZvNwNAkqLxf1cOEqABRchgUAwaREOgyoXUwjEiL0kW4MUSqX6ABE3tl4W1iI5YEgNAAwpjOBAwwALTE0bjyKB2ACCjgAPsmAEIZ5Nh3N2YgF00FgBiBYA4gWABIFlAFpEFgDSBYAMgWALIFgByBYA8gWAAoFgCKBYASgWYAXwgWkgWAGoFgAaBYAmgWynZZkGAOq0XAwCBgeOY4C0RNQb0AWm96e9AH0737vYHdbAbYQUzQaJiQCaI3IMgIyjOgm3pMljGdAom35Yw4gjMBkExJAAC8IHaA1PRNc1LRAa1NjAwwAEYoJkVId3fQDgMjDCm2dcCHQuR4CIEb9f3-KhqPgECMPBNom2EfcaEPY9T3PBMZDkXomzfRZWKIQd42AE0mwgAAjTF1N4sCIM-YRXnWfSoFbPTNmJDJGM8SlHjsa9HFpFQrLuEzHm8a8AlbKgAHdQgwWiwPItJHKgWSdXkz92L-VSNK0nTnNObFcWMAyzIEYRTKYz8LPGBKvEMRlEgiFkQTZJkOS5OV-AUwglJoFSqDUzTtIC4EYAy8iAhqqLOKauKAshdqTKCjVk23cLoD6lrQPohRQrSjR9G6n9osa2Lpr45ZUEwHB8CIUgKGoehBKgYTRJPX8JO4TMkhDUJeNjeNOBkISDyPC6zwvYRbtDB640k2UwomqAgioKg+Tm7idO9UGqCzeNvRkaYVAAehRqAswgDAqCA7gYbB+GaG9YHYYAZkhzEgJ4gL8aoa9NKJpGoDRjGsZxiA8dhwniaDWGAFYKap6HYagBnEeRlnMex3Gry5hGSbBgA2QWaNA2mHzFpnJbZmXae5hWqAAFhV6m1dhzXkeZ9GpfZzmwbFhF31hgB2OapuFgmEaZ1HrZ1jnZbB+n5d5sHiOIt31o9umLat1npf92mg6Jg2AA4I+aqPRa9y3tfju3o+Dp2wYATnT-qzbBjXs59uPbYDgvk5DqhiIhpN3Zp83q9jm3dc75Pgah2jcEHGgqDATg7WdfwMkMcCCCgABrCAQCoIIXUjKBB5m7penCWfjEUSJtQINgaCCTEMEmyOh6gafxkTsXeguWZxlh3o0Gwch1NCWZIjmXPbaKBZtPFmqg5Y0Cfp+WYoCVBvz6J-b+NBoHoz-kGLekoTa8WHqPceYFr5RlwEjRQQA): ```typescript type Join = string[] extends S ? string : S extends [`${infer T}`, ...infer U] ? U[0] extends undefined ? T :...
@knpwrs I have an updated version that I’ll upload to https://github.com/sindresorhus/type-fest/pull/138, hopefully later today
Here's a self-contained port of the use case in #188: ```typescript namespace Foo { export interface InnerFoo { abc: {} } } type Passthrough = T; // Syntax Error interface...
I think easiest solution here would be to add a new `exclude` parameter like `CamelCasedPropertiesDeep` Some of these should be getting built in support though, like `Promise`, `Map` and maybe...
A problem with that way is how TypeScript defines object: That its pure duck typing: As long as it looks like a duck, quacks like a duck, it is a...
> > I think easiest solution here would be to add a new `exclude` parameter like `CamelCasedPropertiesDeep` > > Did you mean create second optional type parameter that will be...
Maybe `Required` could get an `ExtendedRequired` or such as a compromise? Somewhat less pretty, but also somewhat more explicit in what it does, that it extends the built in one