News for hackers. Stuff that matters.
Re:Rewriting TypeScript in Rust? You'D have to be by scotty79 on Thursday December 15, 2022 @04:39AM (#33997230)
Not sure what you mean:

    enum A {}

    type B = { a: number } & A;

    function newB(i:number) {
      return { a: i } as B;
    }

    let b:B = newB(5);

    let m:Map<B, string> = new Map();

    m.set(b, "test");
    m.set({ a: 2 }, "test"); // errors
Re:Rewriting TypeScript in Rust? You'D have to be by svieira on Thursday December 15, 2022 @11:48AM (#34002223)
What he means is that you didn't _used_ to be able to do this:

    declare const NOMINAL_BRAND: unique symbol;
    enum UserIdType {}
    type UserId = string & {[NOMINAL_BRAND]: UserIdType}
    type UserMap<V> = { [key: UserId]: V };
But at some point in the past few years, this is now supported and things like this work as expected:

    const userId: UserId = "234" as UserId
    const coolUsers: UserMap<boolean> = {}
    coolUsers[userId] = true // works
    coolUsers["isThisOkay"] = false // fails
Re:Rewriting TypeScript in Rust? You'D have to be by ajkjk on Thursday December 15, 2022 @12:40PM (#34002966)
Interesting, I thought that wasn't possible, but now I feel like I'm just confused and mixing it up with something else that wasn't possible but can't remember well enough.

But anyway, what I want from TS is

    type UserId = unique string; // or something
    const userId = "1234" as UserId
and no further boilerplate or trickery to get it to work. Would certainly be nice.
Re:Rewriting TypeScript in Rust? You'D have to be by scotty79 on Thursday December 15, 2022 @08:49PM (#34008543)
You can get close to that:

https://github.com/seancroach/ts-opaque