#how to write an assertion type checking whether some type is exactly equal to a given type?

1 messages · Page 1 of 1 (latest)

lilac mauve
#

What i want is to do something like this:

CheckForString<string> // should evaluate to true
CheckForString<number> // false/never
CheckForString<any> // false/never
CheckForString<unknown> // false/never
CheckForString<{}> // false/never
// etc

I've tried with CheckForString<T> = T extends string ? (string extends T ? true : never) : never, but that doesn't seem to do work correctly for any type

bleak daggerBOT
#
jacek#3542

Preview:```ts
type CheckForString<T> = T extends string
? string extends T
? true
: never
: never

type a = [
CheckForString<string>, // should evaluate to true
CheckForString<number>, // false/never
CheckForString<any>, // false/never
CheckForString<unknown>, // false/nev
...```

hollow bolt
#

nothing's going to work properly for any, that's kinda the whole point of any

#

you could use unknown extends T and T extends never to check for any iirc

bleak daggerBOT