News for hackers. Stuff that matters.
Re:TypeScripting the Technical Interview by TheCleric on Sunday March 12, 2023 @07:51PM (#35128389)
If you know what's in the object cast it as that type or be sure by saying if ('propertyName' in unknownObject).

TS is far from perfect. These aren't its ways (it provides any, so of course it's fine with it). These are my restrictions: if you're using a type system, actually use it. Don't lie to yourself and throw anys in your code.

Re:TypeScripting the Technical Interview by beebeepka on Monday March 13, 2023 @01:51PM (#35139576)
any is the last resort.

How do you get around properties assigned via Object.defineProperties recognised by TS, though? I really don't know. Is is an unrelated question

Re:TypeScripting the Technical Interview by TheCleric on Monday March 13, 2023 @05:08PM (#35142687)
Here's how I would do it:

    interface IOptionsX {
        x: number;
    }
    
    interface IOptionsY {
        y: number;
    }
    
    const testObj: IOptionsX = {x : 0};
    
    Object.defineProperties(testObj, {
        y: {
            value: 100,
            writable: true
        },
    });
    
    if ('y' in testObj) { // Could also do `&& typeof testObj.y === 'number'` to be VERY sure.
        const testObjWithY = testObj as typeof testObj & IOptionsY;
        console.log(testObjWithY.y)
    }
Re:TypeScripting the Technical Interview by TheCleric on Monday March 13, 2023 @10:46PM (#35146726)
Though honestly I've gotten this far without EVER using defineProperty so I'd probably continue that streak.