#Make requiremments for variable type

23 messages · Page 1 of 1 (latest)

vapid dove
#
function test<K>(value: K): K { ... }

I want K to meet the following requirements:

  • must be an object
  • no property can be undefined
    is this possible
amber furnace
vapid dove
#

This makes all of the properties unknown, but for my usecase I could make them all strings, so its fine

type ToString<T> = T extends Date
    ? string
    : T extends object
    ? PropertiesToString<T>
    : string

type PropertiesToString<T> = {
    [K in keyof T]: ToString<T[K]>
}
amber furnace
#

can you show your code?

vapid dove
# amber furnace can you show your code?
export function dbStore<X> (
    stores: Required<object & Record<keyof X, {}>>,
    ...path: string[]
): X {
    // redacted for brevity
    return store
}

const profile = dbStore({
    username: preload.username ?? "Loading...",
    avatar: preload.avatar ?? defaultAvatar,
    banner: preload.banner ?? defaultBanner,
  }, id)
amber furnace
#

oh...

#

i meant <X extends object & Record<keyof X, {}>>

vapid dove
#

now it says ( expected

#

I have no idea where it would expect that

amber furnace
vapid dove
amber furnace
#

oh... my bad

#
export function dbStore<X extends object & Record<keyof X, {}>> (
    stores: Required<X>,
    ...path: string[]
): X {
    // redacted for brevity
    return store
}
#

something like this

odd vergeBOT
#
scrimbo.bimbo#0

Preview:ts export function dbStore<X> ( stores: <X extends object & Record<keyof X, {}>>, ...path: string[] ): X { // redacted for brevity //@ts-ignore return stores // note: I'm using ts-ignore here in the actual code aswell // I'm completely fine with that ...

vapid dove
#

My fault🤦‍♂️

#

thank you

amber furnace
#

oh wait

#

the type is still wrong

#

for some reason using {} instead of unknown breaks typescript

#

nvm?