chore(sfc-playground): ignore duplicate logs
This commit is contained in:
parent
1675b6d723
commit
3ffc7be864
@ -7,6 +7,12 @@ import { EmitFn, EmitsOptions } from './componentEmits'
|
||||
import { ComponentObjectPropsOptions, ExtractPropTypes } from './componentProps'
|
||||
import { warn } from './warning'
|
||||
|
||||
type InferDefaults<T> = {
|
||||
[K in keyof T]?: NonNullable<T[K]> extends object
|
||||
? () => NonNullable<T[K]>
|
||||
: NonNullable<T[K]>
|
||||
}
|
||||
|
||||
/**
|
||||
* Compile-time-only helper used for declaring props inside `<script setup>`.
|
||||
* This is stripped away in the compiled code and should never be actually
|
||||
@ -25,7 +31,10 @@ export function defineProps<
|
||||
TypeProps = undefined,
|
||||
PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions,
|
||||
InferredProps = ExtractPropTypes<PP>
|
||||
>(props?: PP): Readonly<TypeProps extends undefined ? InferredProps : TypeProps>
|
||||
>(
|
||||
props?: PP,
|
||||
defaults?: InferDefaults<TypeProps>
|
||||
): Readonly<TypeProps extends undefined ? InferredProps : TypeProps>
|
||||
// implementation
|
||||
export function defineProps() {
|
||||
if (__DEV__) {
|
||||
|
@ -123,6 +123,9 @@ function createSandbox() {
|
||||
runtimeError.value = 'Uncaught (in promise): ' + error.message
|
||||
},
|
||||
on_console: (log: any) => {
|
||||
if (log.duplicate) {
|
||||
return
|
||||
}
|
||||
if (log.level === 'error') {
|
||||
if (log.args[0] instanceof Error) {
|
||||
runtimeError.value = log.args[0].message
|
||||
@ -156,7 +159,10 @@ function createSandbox() {
|
||||
}
|
||||
|
||||
async function updatePreview() {
|
||||
console.clear()
|
||||
// @ts-ignore
|
||||
if (import.meta.env.PROD) {
|
||||
console.clear()
|
||||
}
|
||||
runtimeError.value = null
|
||||
runtimeWarning.value = null
|
||||
try {
|
||||
|
@ -19,6 +19,32 @@ describe('defineProps w/ type declaration', () => {
|
||||
props.bar
|
||||
})
|
||||
|
||||
describe('defineProps w/ type declaration + defaults', () => {
|
||||
defineProps<{
|
||||
number?: number
|
||||
arr?: string[]
|
||||
arr2?: string[]
|
||||
obj?: { x: number }
|
||||
obj2?: { x: number }
|
||||
obj3?: { x: number }
|
||||
}>(
|
||||
{},
|
||||
{
|
||||
number: 1,
|
||||
|
||||
arr: () => [''],
|
||||
// @ts-expect-error not using factory
|
||||
arr2: [''],
|
||||
|
||||
obj: () => ({ x: 123 }),
|
||||
// @ts-expect-error not using factory
|
||||
obj2: { x: 123 },
|
||||
// @ts-expect-error factory return type does not match
|
||||
obj3: () => ({ x: 'foo' })
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
describe('defineProps w/ runtime declaration', () => {
|
||||
// runtime declaration
|
||||
const props = defineProps({
|
||||
|
Loading…
Reference in New Issue
Block a user