Default non-keyword paraeters in type Racket

How do you do an optional function parameter in Typed Racket?
I want the paraneter NOT to be keyword parameter.

I'm used to writing things like

(define (foo a [b d]) ( ... and when i ask for the value of b, and I've been called with only one argument, I see d as its value. )

If I actually want to see whether b was present, I choose d to be a value that will not naturally occur as second argument. Maybe it even has a different type.

If I'm in typed Racket instead of in Racket, what's the syntax for specifying the types? Especially the type of the optional argument and its default value?

If I'm in typed Racket, is there a better way to check for a missing function argument than comparing it to a specified default value? (Come to think of it, this second question is good about ordinary, untyped Racket too.)

-- hendrik

#lang typed/racket

(require typed/rackunit)

(: f (->* (Number) (String) Number))
(define (f x (y 10))
  (if (number? y)
      (+ x y)
      x))

(check-equal? (f 11 "hello") 11)
(check-equal? (f 22) 32)