{-# LANGUAGE TypeOperators #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TemplateHaskell #-} module Main where import Data.Aeson as A import Data.Aeson.TH as A hiding (Options) import Data.Aeson.TypeScript.TH import Data.Proxy import Servant.API import Servant.TypeScript data User = User { name :: String , age :: Int , email :: String } deriving (Eq, Show) deriveJSONAndTypeScript A.defaultOptions ''User type UserAPI = "users" :> Get '[JSON] [User] :<|> "albert" :> Get '[JSON] User :<|> "isaac" :> Get '[JSON] User main = writeTypeScriptLibrary (Proxy @UserAPI) "/tmp/test"