From: daiwei Date: Thu, 6 Nov 2025 03:51:35 +0000 (+0800) Subject: types(defineProps): avoid never props becoming boolean flags X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fedison%2Ffix%2F14056;p=thirdparty%2Fvuejs%2Fcore.git types(defineProps): avoid never props becoming boolean flags --- diff --git a/packages-private/dts-test/setupHelpers.test-d.ts b/packages-private/dts-test/setupHelpers.test-d.ts index 656f1da79f..0cf713ab9b 100644 --- a/packages-private/dts-test/setupHelpers.test-d.ts +++ b/packages-private/dts-test/setupHelpers.test-d.ts @@ -33,6 +33,16 @@ describe('defineProps w/ type declaration', () => { expectType(props.boolAndUndefined) }) +describe('defineProps w/ never prop', () => { + const props = defineProps<{ + foo?: never + bar: number + }>() + + expectType(props.foo) + expectType(props.bar) +}) + describe('defineProps w/ generics', () => { function test() { const props = defineProps<{ foo: T; bar: string; x?: boolean }>() diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 67e1d55038..7515a98461 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -99,7 +99,9 @@ export type DefineProps = Readonly & { type BooleanKey = K extends any ? [T[K]] extends [boolean | undefined] - ? K + ? boolean extends T[K] + ? K + : never : never : never