rescript-association / genType

Auto generation of idiomatic bindings between Reason and JavaScript: either vanilla or typed with TypeScript/FlowType.
https://rescript-lang.org/docs/gentype/latest/introduction
MIT License
757 stars 44 forks source link

Missing type for `exn` #634

Closed sgrove closed 1 year ago

sgrove commented 1 year ago

Exporting a function like:

@genType
let basicEvalNode = (
  ~onError: exn => unit,
) => {

Outputs the following TypeScript:

export const basicEvalNode: (_1: {
  readonly onError: (_1: exn) => void;

But exn is never defined/imported, so we get an error:

src/HyperEval.gen.tsx:38:17 - error TS2304: Cannot find name 'exn'.
38   onError: (_1: exn) => void,

It'd be nice to even export it as unknown, since that would allow TypeSCript to continue

sgrove commented 1 year ago

One small hack I've found is to make a type alias but mark it opaque and use that instead, e.g.:

@genType.opaque
type userExn = exn

Obviously not ideal from the Javascript/Typescript side of things, but it means TypeScript can at least compile and doesn't block things for a bit.