Add typescript support