The cause of my issue was incredibly simple. This is the correct syntax for Typescript Composition API:
<!-- good: -->
<script setup lang="ts">
...
</script
I had the attributes out of order:
<!-- bad: -->
<script lang="ts" setup>
...
</script