#cant figure out the right types to surpress this error

11 messages · Page 1 of 1 (latest)

robust swift
#

code:

const cachableUserSource = <T>(table: string, key: string) => ({
  cache: flru<T>(100),
  getUser: async function (query: string) {
    const user = this.cache.get(query);
    if (user) return user;
    const { data, error } = await supabase.from(table).select("*").eq(key, query).single();
    if (error) throw error;
    this.cache.set(query, data);
    return data;
  },
  addUser: async function (user: T, insert: boolean) {
    const { data, error } =  insert
    ? await supabase.from(table).insert(user).select().single()
    : await supabase.from(table).upsert(user).select().single();
    if (error) throw error;
    this.cache.set(user[key], data);
    return data;
  },
});

the line this.cache.set(user[key], data); is erroring because ts doesn't know that user[key] will be a string

robust swift
#

!helper

#

i should make a simpler repro

raven phoenixBOT
#
KTibow#3960

Preview:ts // error 1 const func1 = <T>(val: T, key: string) => { return val[key] } // error 2 const func2 = <T>(val: T, key: keyof T): string => { return val[key] }

pure sigil
robust swift
#

wdym?

pure sigil
#

ill get to u in a few minutes hold on

robust swift
#

anyway i fixed it by using as string, ill wait for you though

raven phoenixBOT
#
nop#2745

Preview:```ts
type j = {
a: string
b: number
}

type ks = keyof j extends infer T extends keyof j
? j[T] extends string
? T
: never
: never

type KeysOnlyAssignable<Obj, T> =
keyof Obj extends infer KO
? KO extends infer K extends keyof Obj
? Obj[K] extends T
? K
: never
: never
: never
...```

pure sigil
#

@robust swift two styles of doing it

robust swift
#

cool