expectType<boolean | undefined>(res2.bool)
})
+describe('withDefaults w/ defineProp type is different from the defaults type', () => {
+ const res1 = withDefaults(
+ defineProps<{
+ bool?: boolean
+ }>(),
+ { bool: false, value: false },
+ )
+ expectType<boolean>(res1.bool)
+
+ // @ts-expect-error
+ res1.value
+})
+
describe('defineProps w/ runtime declaration', () => {
// runtime declaration
const props = defineProps({
Defaults extends InferDefaults<T>,
BKeys extends keyof T,
> = Readonly<MappedOmit<T, keyof Defaults>> & {
- readonly [K in keyof Defaults]-?: K extends keyof T
+ readonly [K in keyof Defaults as K extends keyof T
+ ? K
+ : never]-?: K extends keyof T
? Defaults[K] extends undefined
? IfAny<Defaults[K], NotUndefined<T[K]>, T[K]>
: NotUndefined<T[K]>